<SEC-DOCUMENT>0001406666-23-000026.txt : 20230221
<SEC-HEADER>0001406666-23-000026.hdr.sgml : 20230221
<ACCEPTANCE-DATETIME>20230221160131
ACCESSION NUMBER:		0001406666-23-000026
CONFORMED SUBMISSION TYPE:	10-K
PUBLIC DOCUMENT COUNT:		91
CONFORMED PERIOD OF REPORT:	20221231
FILED AS OF DATE:		20230221
DATE AS OF CHANGE:		20230221

FILER:

	COMPANY DATA:	
		COMPANY CONFORMED NAME:			CALIX, INC
		CENTRAL INDEX KEY:			0001406666
		STANDARD INDUSTRIAL CLASSIFICATION:	COMMUNICATION SERVICES, NEC [4899]
		IRS NUMBER:				680438710
		FISCAL YEAR END:			1231

	FILING VALUES:
		FORM TYPE:		10-K
		SEC ACT:		1934 Act
		SEC FILE NUMBER:	001-34674
		FILM NUMBER:		23647978

	BUSINESS ADDRESS:	
		STREET 1:		2777 ORCHARD PARKWAY
		CITY:			SAN JOSE
		STATE:			CA
		ZIP:			95134
		BUSINESS PHONE:		408-514-3000

	MAIL ADDRESS:	
		STREET 1:		2777 ORCHARD PARKWAY
		CITY:			SAN JOSE
		STATE:			CA
		ZIP:			95134

	FORMER COMPANY:	
		FORMER CONFORMED NAME:	CALIX NETWORKS INC
		DATE OF NAME CHANGE:	20070713
</SEC-HEADER>
<DOCUMENT>
<TYPE>10-K
<SEQUENCE>1
<FILENAME>calx-20221231.htm
<DESCRIPTION>10-K
<TEXT>
<XBRL>
<?xml version="1.0" ?><!--XBRL Document Created with Wdesk from Workiva--><!--Copyright 2023 Workiva--><!--r:65ceb81b-1301-4d03-a3b5-a19a3f419a3b,g:9d9ffaaa-0d49-4a33-8fc4-ed994a16f30c,d:1dda958eb66f4ab38aa84c917304ece3--><html xmlns:ixt-sec="http://www.sec.gov/inlineXBRL/transformation/2015-08-31" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns="http://www.w3.org/1999/xhtml" xmlns:ixt="http://www.xbrl.org/inlineXBRL/transformation/2020-02-12" xmlns:calx="http://www.calix.com/20221231" xmlns:srt="http://fasb.org/srt/2022" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dei="http://xbrl.sec.gov/dei/2022" xmlns:country="http://xbrl.sec.gov/country/2022" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:ix="http://www.xbrl.org/2013/inlineXBRL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:us-gaap="http://fasb.org/us-gaap/2022" xmlns:xbrli="http://www.xbrl.org/2003/instance" xml:lang="en-US"><head><meta http-equiv="Content-Type" content="text/html"/>


<title>calx-20221231</title></head><body><div style="display:none"><ix:header><ix:hidden><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityCentralIndexKey" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM180L2ZyYWc6YTFhZTUwMTQzODU3NDAwMTliMjA1NzZlYzhlOTQ5ZmUvdGFibGU6NzJkYzk5M2RkZWY5NDNhODgwMWRmNjQ2ZGU3MjVmMTkvdGFibGVyYW5nZTo3MmRjOTkzZGRlZjk0M2E4ODAxZGY2NDZkZTcyNWYxOV8yLTEtMS0xLTM2MTk4_5d1b3ab6-fa7e-4107-a834-2562c9a64c07">0001406666</ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:AmendmentFlag" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM180L2ZyYWc6YTFhZTUwMTQzODU3NDAwMTliMjA1NzZlYzhlOTQ5ZmUvdGFibGU6NzJkYzk5M2RkZWY5NDNhODgwMWRmNjQ2ZGU3MjVmMTkvdGFibGVyYW5nZTo3MmRjOTkzZGRlZjk0M2E4ODAxZGY2NDZkZTcyNWYxOV81LTEtMS0xLTM2MTk4_0b2d5333-7ecb-442d-b3c7-66d00ae73148">false</ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:DocumentFiscalYearFocus" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM180L2ZyYWc6YTFhZTUwMTQzODU3NDAwMTliMjA1NzZlYzhlOTQ5ZmUvdGFibGU6NzJkYzk5M2RkZWY5NDNhODgwMWRmNjQ2ZGU3MjVmMTkvdGFibGVyYW5nZTo3MmRjOTkzZGRlZjk0M2E4ODAxZGY2NDZkZTcyNWYxOV82LTEtMS0xLTM2MTk4_c29cd0ad-7f80-419b-b2c9-3490312c3dab">2022</ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:DocumentFiscalPeriodFocus" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM180L2ZyYWc6YTFhZTUwMTQzODU3NDAwMTliMjA1NzZlYzhlOTQ5ZmUvdGFibGU6NzJkYzk5M2RkZWY5NDNhODgwMWRmNjQ2ZGU3MjVmMTkvdGFibGVyYW5nZTo3MmRjOTkzZGRlZjk0M2E4ODAxZGY2NDZkZTcyNWYxOV83LTEtMS0xLTM2MTk4_798ce26f-976e-49ef-96d4-39019d3255f9">FY</ix:nonNumeric><ix:nonNumeric contextRef="i818127b04e1e47dbad6b509284dc66e3_D20220101-20221231" name="calx:ProductWarrantyPeriod" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1NQ_52e60d60-98c1-49fa-aeb6-aa5951b471ac">P1Y</ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="calx:ProductWarrantyPeriod" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1OQ_d86fb7cc-3137-407d-b8ce-6c28a7e598e4">P3Y</ix:nonNumeric><ix:nonNumeric contextRef="i4884a1eea7384d1598cb80136c65edb1_D20220101-20221231" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4MDI_2e01504e-91d5-45fd-890f-25b987875d7a">P3Y</ix:nonNumeric><ix:nonNumeric contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" name="us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_027d6b6d-617d-484f-9ecf-b96b9b28d960">http://fasb.org/us-gaap/2022#AccruedLiabilitiesCurrent</ix:nonNumeric><ix:nonNumeric contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" name="us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_50fa3eb5-1337-42a0-a46b-a7c0ec1f6782">http://fasb.org/us-gaap/2022#AccruedLiabilitiesCurrent</ix:nonNumeric><ix:nonNumeric contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" name="us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzAtMC0xLTEtMzYxOTg_0eaed16b-5a85-4f40-8558-3b742d67e1cb">http://fasb.org/us-gaap/2022#AccruedLiabilitiesCurrent</ix:nonNumeric></ix:hidden><ix:references xml:lang="en-US"><link:schemaRef xlink:type="simple" xlink:href="calx-20221231.xsd"></link:schemaRef></ix:references><ix:resources><xbrli:context id="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ia8228bdbbce54d7c9624a78d5d2b980e_I20220701"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2022-07-01</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="usd"><xbrli:measure>iso4217:USD</xbrli:measure></xbrli:unit><xbrli:context id="ieb250817b6e542ed8d81042a73b3771f_I20230210"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2023-02-10</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="shares"><xbrli:measure>xbrli:shares</xbrli:measure></xbrli:unit><xbrli:context id="i18ca6c2cd59045dcb331174af35d6d74_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="usdPerShare"><xbrli:divide><xbrli:unitNumerator><xbrli:measure>iso4217:USD</xbrli:measure></xbrli:unitNumerator><xbrli:unitDenominator><xbrli:measure>xbrli:shares</xbrli:measure></xbrli:unitDenominator></xbrli:divide></xbrli:unit><xbrli:context id="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="idee0869faf144f42866d7aa288175d02_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ie82c4a028e2f46f49e00eb16a6221418_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i0c590b88b1f64a2a9a73b5cdd3ac6d16_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i1381a46e2faf489e8372f8f632cfa082_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i3c40cef6156346cb9dfc20f4aa283283_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i221678b32f244027820fdddd22d493cd_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ibe3ffb6b029948b89bd038665fa57d44_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i62dee52382d14e1f9e489331c0ab3f10_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i7643f564c7844d13b40e6df62ba9ce35_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i1103780cf7bc45888c71a420256ec31e_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ieb0737a6b805496eb64c267495cdc455_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i5b9a216ba92f4662a6c5e29e4660d201_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i2b2de5dc230f469ebf57510dcb995ef8_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i70828112df2e4dc0aacf44aeade1a12c_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id00d493640324cd0b73797ced1093269_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic512b19e711643f59c98f75953b49777_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i5647c99c6e924e9681658be971eaeb0b_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ifc02f355b98046449ab7a198a475e208_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iced057490ecb40f8af711b91b2a3800d_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i338d4f0ba4c9446fa367007416d30e0e_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i00b2f6ea6d574881a414d40c48f4b09f_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="if9d416b760f04d82b7305c51cd60f965_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i6558c3e05bc14f9787f4c77c4cbf02da_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i7b351fe8ba1143289315d78b03323c97_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i62e8d30d767641039a22982dd9da4de2_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib57a8227187a4016b87def7464807008_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i8f14ec41ce5b42bdb7290c9b661e7b40_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i0e63d4cd16584e67be8964684fea4f2b_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i99e1660b325840b39b58d880b4cb6c3a_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iae919b947c1f4fd8a9545cb83d022877_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ibf694ca5c1784abd900378a9d5cac4c9_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i1b11ec9c87f647eda542f47bd568cae6_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i94330ed0d9cb44ad89b11f0416a40439_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i2fc9c021dca34b31add79cf37c24ff19_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib9005996b5004e2ea8204ab8956288bf_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i818127b04e1e47dbad6b509284dc66e3_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ib4e76b7a0138479ebec9c577d687f1b3_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i11ca9800e83c4a9fac73cab090bae62c_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:BrazilChinaAndUnitedKingdomMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">srt:SubsidiariesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i7ad4ad7c154840f4bae9ab60b925baa2_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4884a1eea7384d1598cb80136c65edb1_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i83e79e5ca7b146d28600c379569850f6_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ic399c58a2c1a45bd84aaa9618f98d9e8_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i0bf6d605c909425e9b0bbeda75e84492_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="if54b7cb1441945f288166b95742d4e04_D20210704-20211002"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2021-07-04</xbrli:startDate><xbrli:endDate>2021-10-02</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ic38a86a38cbb476798e3dd19d71ee36d_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CashMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic6740d270bd44d0183c169758c4ea62d_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CashMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i0f4b83625a934f8ca3fe1b1ca19c4b55_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i673cc06359884f75af7187294e97424c_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ied4eb127f8c34de9ab8ee8c6d45c70d5_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i664d2390333c48adb557984dce1aa6e2_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i9c5831145c9248d6abebe6d6cef1287a_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i09a1c858595a4a30a3c15e60909e366e_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i7e64a1001c8149bcaa2a5d6d9cb3384f_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i535c7a70b8a942c79affe1727d7ae52b_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iae1efd6e91be43c984f2ec4c782de70d_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i3333828445aa4fb99c0ed582b56ad206_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic16ba641b2084da4b404a37dcb45e256_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i5b99835257004211b4a068dd960dc899_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i820b02ffde9349fb97eb0f64a6f6c7e9_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i949c87eb081c4441b7e851734c228f84_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i6d7b2ffce6be4b6fa0bb526a979535d0_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i0a565c8b23bc4d09a1f297fb9bed6d2e_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i744cd44f39884a5a9e7c494e807de46d_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i4793b5e7b36744d0b452f2f9832d9099_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ibcead81fc3df41b3a1cf1e698b490bdc_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i48c13f271a7048a49e9f93bc547075a0_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesAndCashEquivalentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i83fd5d90fe6b4285bab023841c3a14b0_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesAndCashEquivalentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i86f4de24126640ba8b71657febb828f0_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="icd24b2de72464d3ba30d3ad07a4e56cd_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i2c3a8629b4304f7eb5ca0f3daa147a20_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic3ce6d215fd045b89989818cac3c19c7_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesAndCashEquivalentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib4730c11d033405ab26535a7d5d1902a_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i4e5e68f096524db3a6c5289a50bd1e54_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i0ab466283f8f4102886a538b89828f49_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i68862cb4af34489a821a714a84d59703_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iec2cc538fb224ec88a4f3b699672a078_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i056a524a4298478b90de1f1a23ee2241_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i67913f8a27bc47f1be4f5522a875439a_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id840696585cf4c0d85ed3042e75c8d4f_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iebc70d6cc46241e39e116d70f0745b5e_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic8e53431a0164b19b6fd5952ecd4356d_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i20829567e15d4e138a070a1d2bd1f296_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i952170666232494785ca17ec4b0f402f_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iedb70c0486cf430c999ecb779842f9b7_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i03feb03d4b1948faa67282c5f94b8b9f_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iec5c97ff467a498191966be3f6fe21e2_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i845d08c05ade4329a7d34e722a2a29ee_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="icbb5af7610094c1ea043d7757229aea7_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i57af706ebf9c4dcfbc3ae9b3887ece24_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ia446f035a91b4e8cbc5dfb2943bf38cc_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i04a13de45df2495e910c5650860ee7ae_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ibcbd3e4469a449f7b3a0e404714fbb82_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i92547be2d4ec4c2fbe99b417670a0c1b_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ie5b3737f696b45309b05ec8486ef71e8_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iffabf941f6c24db2bf8711334e47cbaf_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i17b34b27f19945deb8a3001fdb72bef4_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i3b2a3664f2194292821239b94d9d12d5_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i2e365a49d2204d5eb34750b7781343b9_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="if31b6a989a394506af109a221346eb6d_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i17abd99a86944a3faf931f3eee82c2c4_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i3ebca95019264ed79a51ec6974672638_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="if01ab496558d41afab2522673093c772_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ifac485b7e7d44598b822d573869dfc8f_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i682285ed68dc42ae833aa59cfbd46465_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ifa934a3e48ab4d279f8356602465981e_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib755630aec6046029d3ebd796781b082_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i1e4012789050403a8f1ba4ae649dc645_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib9efcd417c244b0da39cf058581c135d_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id5bc9fe6b44f485ea9b213709ae25a11_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i189b4703619e4017b1fab65dbc717051_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i73bf3f7d4a2e494896bee43a0d38e4ca_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id818e7cab6a34ee78d221eeb25506d00_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic5caa568a0ce4d57a7e0f3c3a88488d8_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ieb051ab610094bc982d7f8bddacb801c_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib92f3ac53aca49de92990fdea96d45fa_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i8eef97f8547d428085e80cc1cc4f16ce_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iebe8abb865a348c58ba05736022e6e1f_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i9d905ccbbb3241a997324600f7a5cfc2_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="if617aab8c27e4dc6aab4a0a32d272ca3_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i5782a4e7e94146cbac209e543c2116a3_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iad5ba5a8071f469bbd153fbec01071bb_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i915095b41f604af89d5f5c1c0b516f64_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i0f99024590684757bf76146dac6621f8_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i87fd0a9a32974808b514ae0e6b4977f2_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i92749530cfc04658b8e87d80c4434870_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ie99c59fbe14a4befb7f451e29f097c4f_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i4827582f665d4174a35e6ed4f0286360_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iebb784ec1d1048e4b3adf4de3e50ed56_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib3e6d85676a149d5b92fe67b4dd2f810_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic272514a784a4bfb9f74d54bf7e6b2d4_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i9c61681ac2dd40a199c97e498d4424b3_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="icb4228678bd94611ba039b6b832a6910_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">calx:SoftwareMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iec140b402bfd43a8810ed0d254278f7f_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">calx:SoftwareMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i6ae01a9fed3143c39a5d8900e11ab1dc_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id764aa16db854d7088bcc29cffc1ecd4_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i6ad0d0e543464e82a0d0f6c87834547c_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i1ab5679f664a4a9483a2e951b60376c2_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ifec7805f58bf4e1eb494b1fd74099264_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i64cf409db5e74b9e888f27feb92d3f31_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i29707179eee34196994e77484ecb2b78_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ia8bc5723e8d94237a0acf104c58672c9_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringPlanAxis">calx:AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ief29060d1533404bb2cd809c20ef7077_D20211003-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:SanJoseCaliforniaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-10-03</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ia1b2dc7d18c14276b64719107b47aec1_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:SanJoseCaliforniaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id212028f7d3447bc991b7b183b10250a_I20211130"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2021-11-30</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="number"><xbrli:measure>xbrli:pure</xbrli:measure></xbrli:unit><xbrli:context id="i7fadbf2c253d413a88bde1b78e167eca_D20200801-20200831"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:SubsidiarySaleOfStockAxis">calx:PublicStockOfferingMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-08-01</xbrli:startDate><xbrli:endDate>2020-08-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ia82b2d49648943eaa5310ec5fb3becca_I20200831"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:SubsidiarySaleOfStockAxis">calx:PublicStockOfferingMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-08-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i91bded7562bb4301ad3b554b40d54850_D20200801-20200831"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:SubsidiarySaleOfStockAxis">us-gaap:OverAllotmentOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-08-01</xbrli:startDate><xbrli:endDate>2020-08-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i505f47a2e1ed4f3195b453dfbe6a64f4_D20220701-20220731"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2022-07-01</xbrli:startDate><xbrli:endDate>2022-07-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="idc3cb693fe5140938ac10dd90b12e4b3_I20220731"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2022-07-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i3cbfffa9694a42a389d948ddc37f1e20_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2019EquityIncentiveAwardPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i41eb5021bb2b41b5b265a980031bec90_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2019EquityIncentiveAwardPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i8c139b1f6d274d5e8a525134045a6df8_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2019EquityIncentiveAwardPlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i75d90d403aa54a2294076893730c0ec6_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2019EquityIncentiveAwardPlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-02-01</xbrli:startDate><xbrli:endDate>2021-02-28</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ifc83d7d9ef314c2da18ad45d02064e43_I20220228"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-02-28</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i965de145a5b34dcd8fa276603435fdac_D20210201-20210228"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-02-01</xbrli:startDate><xbrli:endDate>2021-02-28</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i700305bde84145bb849464dd58867c37_D20210201-20210228"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-02-01</xbrli:startDate><xbrli:endDate>2021-02-28</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i638345f07d274c7894c3feb7fb3b1042_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i541d20d065cc4fd69f959b3cae672349_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ida3289d8c97f4feda1965fdc60834811_D20220201-20220228"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-02-01</xbrli:startDate><xbrli:endDate>2022-02-28</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i295a35bf54c94432a53d75c53f7fd8cb_I20230228"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-02-28</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="if0e6bad883de4fcf86c4c0bdd31069fb_D20230201-20230228"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-02-28</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iec5297cc8cee403da61498dad383a323_D20230201-20230228"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-02-28</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ic11cc38580b54c38bdedf1d2424db347_D20230201-20230228"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-02-28</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="if3854c3da7554041bf128b38014a78ec_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iee534fe4989d4adfa556c7ec64860bfa_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:EmployeeStockPurchasePlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:EmployeeStockPurchasePlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:unit id="period"><xbrli:measure>calx:period</xbrli:measure></xbrli:unit><xbrli:context id="i880c5d0fdabc49049e2803cb35fd9265_D20190501-20190531"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:EmployeeStockPurchasePlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-05-01</xbrli:startDate><xbrli:endDate>2019-05-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i0ec7c77a75e44d88b5272edccf8226e0_I20190430"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:EmployeeStockPurchasePlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-04-30</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="if0e209b492c749879687a6547794124c_I20190531"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:EmployeeStockPurchasePlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-05-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i5b465428849c4e708a3b9d04506880c1_D20200501-20200531"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-05-01</xbrli:startDate><xbrli:endDate>2020-05-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i26ca0d92b2424298b0bcea3c569b00ba_I20200531"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-05-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i58c539110982492a8e0b62fd8b455319_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueProductsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="if4be25f0af9f4b0ea5f22877ddbfebd7_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueProductsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i72cf599545d14ebc9ce8787ba50c5aa0_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueProductsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="idaed2f6c8c27442a8b45142b76ced351_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueServicesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4106eb5f32cc4149875537163855706f_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueServicesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ic93cf0acaeed4e3b979094ca720d677c_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueServicesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i7662d716785e4f228c33abfdf3c8f4b3_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i551b31ab695c495abc571c977cc81179_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ib672ba4f581b4efb88684284d82eeeee_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i077d8297ff7e49b0bbfd5fe52a5f1bf7_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ic6675333d4254a57862012c889ba560e_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i3a828b5e5a764680970a3d824b40aca7_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i44b5a1d07f9948e1b8ee67a159f31b98_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="id9c1cab1298a4f73ab040395f2f7faa1_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ic8e79da6e7d2470fa750cd2afb19e759_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ia769a333e78142368aad724844d01ad9_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="id42b2b8786cd441ab4f99814e4e629c3_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i42bec794c13c4ba7acb3467565058cfc_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i7c7d626e2ca643048ffb47a60d526ee3_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i67e02cfc4d874cff8afe2659b8d50558_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ia0851320733849cd9c11d5811d229fc8_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ic1895f9b31ae4e18a52aedee0737e67e_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i6b7705e9c54642b2a6c0b775486df247_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i1c63790a858946a996ca1299276c0a06_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2019PlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib254f0683dd74e86af161b45013b2484_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i960b09b6825f4607b4d06a80a878fbdb_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i0735e262a99c4c5789bcfd438e2a271f_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="if64a3a711a7c4298ad36afd715aa0bb7_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ief77c956212749c98a1e47bc2259eed1_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ia6a7a2e1b59f47d885453b2b96588acc_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i12575da023634f6cb1d81df6e92df5a7_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i388a82dc33064d18880924884eb0f3c6_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ia3ff94b23a2c4e91a27bf12f2f3e6231_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic9b55f5c1eeb41c79688d7363a1baa49_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="icd96ce43bdbe4439a3f6e14fdc5c6b75_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i7b419d352d354ed585a00db42c0dc4a8_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ifb0a61fc15ad461aae58a57e0493b921_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">calx:CaliforniaStateMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i0e5bdc2854004c18b26a2bdaaed61080_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">calx:OtherStateMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ieae5dffc94804c0fb48da0faaee7d475_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i792b178b52944936bae6b48cfc3fce7f_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i728d38d208c644f8bd1d8544c2d48f1e_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i33041b28ed9f44f5a1ea4de785d07036_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ie84a15f4241d4e8da95b19019b001ec5_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i79eefe6e67de420ab8fe4564c2d04fa1_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i5cc304bf3bd8498298acfd78ba22d90f_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:AmericasExUSMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i5ed901e4c55c42e4a419f1770435e0db_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:AmericasExUSMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="id595cb86ff10436abaf67dbd61231ec1_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:AmericasExUSMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i8b262bd7fe1a4691a8c6bae2a9787fbd_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:MiddleEastAndAfricaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i18ab8bb7900d4d298140ed4be06aba85_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:MiddleEastAndAfricaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iff0d225298e349df93cca1c136c9fe21_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:MiddleEastAndAfricaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="idb8c564de1d14caaabae034fdf7227b4_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AsiaPacificMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i43b188fea50c48b0b4b3465f99c1a9a9_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AsiaPacificMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i6e6ad924af64444b9fd8b9c73fe1fd0e_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AsiaPacificMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ia7372260ff5944fbbd414f122dbb6a4e_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="idc76a7bbda2145469e7de41ace18e7dd_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i2449b8a5dc374d20bbd43cda851a4aec_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CN</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id634ed9a8216446eb71023487e565cff_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CN</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i4dbf04314295476890b7ee4e02340210_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:IN</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i6c55f8ead39246eeb1b8ab7a037df871_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:IN</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i2bf837c4cb024b00b0c258f20aeaad31_I20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:typedMember dimension="us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis"><us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain>2023-01-01</us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain></xbrldi:typedMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i04be09c8797d413a93af8d5d08358be6_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:MajorCustomersAxis">calx:LumenTechnologiesIncMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:RevenueFromContractWithCustomerMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i7932d93f74d241a2b2e0cfcec811a2f5_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:MajorCustomersAxis">calx:OneCustomerMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ida3b3cbaef8142a188dbc53f1b97daac_D20220101-20221231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001406666</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:MajorCustomersAxis">calx:CustomerTwoMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context></ix:resources></ix:header></div><div id="i1dda958eb66f4ab38aa84c917304ece3_1"></div><div style="min-height:42.75pt;width:100%"><div><span><br/></span></div></div><div style="margin-top:3pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:18pt;font-weight:700;line-height:120%">UNITED STATES</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:18pt;font-weight:700;line-height:120%">SECURITIES AND EXCHANGE COMMISSION</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:12pt;font-weight:700;line-height:120%">Washington, DC 20549</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:98.900%"></td><td style="width:0.1%"></td></tr><tr style="height:5pt"><td colspan="3" style="border-bottom:2pt solid #000000;padding:0 1pt"></td></tr></table></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:18pt;font-weight:700;line-height:120%">FORM <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:DocumentType" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18zMjM5_48ba884b-1687-495f-9555-9bd3385ffeca">10-K</ix:nonNumeric></span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:98.900%"></td><td style="width:0.1%"></td></tr><tr style="height:5pt"><td colspan="3" style="border-bottom:2pt solid #000000;padding:0 1pt"></td></tr></table></div><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:120%">(Mark One)</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:4.756%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:93.044%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:DocumentAnnualReport" format="ixt-sec:boolballotbox" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6MWRiNGExMzc1MzBjNGM1YjhmODgwYzg5ODdiMWFiYjEvdGFibGVyYW5nZToxZGI0YTEzNzUzMGM0YzViOGY4ODBjODk4N2IxYWJiMV8wLTAtMS0xLTM2MTk4_ff33451e-def2-4aa2-be0d-475843420736">&#9746;</ix:nonNumeric></span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:11pt;font-weight:700;line-height:100%">ANNUAL REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934</span></td></tr></table></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">For the fiscal year ended <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:DocumentPeriodEndDate" format="ixt:date-monthname-day-year-en" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18xMjg_7ca0f519-4d33-4681-95d8-5e8547834be5"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:CurrentFiscalYearEndDate" format="ixt:date-monthname-day-en" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18xMjg_7ad4795e-bf2d-4901-9ef4-3aa739f846a0">December&#160;31</ix:nonNumeric>, 2022</ix:nonNumeric></span></div><div style="margin-top:6pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">OR</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:4.756%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:93.044%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:DocumentTransitionReport" format="ixt-sec:boolballotbox" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6MzUzNDk4ZmQ4NDA3NDVjNWE4YmYzODM4NzNlYWZmZWMvdGFibGVyYW5nZTozNTM0OThmZDg0MDc0NWM1YThiZjM4Mzg3M2VhZmZlY18wLTAtMS0xLTM2MTk4_8e06559f-efc4-423f-9bb9-c616f2dc4d71">&#9744;</ix:nonNumeric></span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:11pt;font-weight:700;line-height:100%">TRANSITION REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934</span></td></tr></table></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">For the transition period from&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; to &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></div><div style="margin-top:3pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Commission File Number: <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityFileNumber" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18yMjA_ebb69123-5ee3-41f7-9810-5963db2a99dc">001-34674</ix:nonNumeric></span></div><div style="margin-top:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:98.900%"></td><td style="width:0.1%"></td></tr><tr style="height:5pt"><td colspan="3" style="border-bottom:2pt solid #000000;padding:0 1pt"></td></tr></table></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:24pt;font-weight:700;line-height:120%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityRegistrantName" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18zMjQw_061c12bd-f894-49af-a7ff-2c7b757715d8">Calix, Inc.</ix:nonNumeric></span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">(Exact Name of Registrant as Specified in Its Charter)</span></div><div style="margin-top:9pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:98.900%"></td><td style="width:0.1%"></td></tr><tr style="height:5pt"><td colspan="3" style="border-bottom:2pt solid #000000;padding:0 1pt"></td></tr></table></div><div><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:39.515%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.630%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:46.555%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityIncorporationStateCountryCode" format="ixt-sec:stateprovnameen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8wLTAtMS0xLTM2MTk4_92fcc760-b221-4a20-b3f3-62bc443bc774">Delaware</ix:nonNumeric></span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityTaxIdentificationNumber" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8wLTItMS0xLTM2MTk4_e1107cd3-e2eb-4ed7-84d2-d31c9b4bcdbf">68-0438710</ix:nonNumeric></span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">(State or Other Jurisdiction of<br/>Incorporation or Organization)</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">(I.R.S. Employer<br/>Identification No.)</span></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityAddressAddressLine1" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8zLTAtMS0xLTM2MTk4L3RleHRyZWdpb246NzZhNjQyZWY0ZGM3NDA3NzgwN2FkMmE5MjZjNjYxNzZfNA_8a9e72ff-4461-4fbf-8315-981fc8f0272d">2777 Orchard Parkway</ix:nonNumeric></span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityAddressCityOrTown" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8zLTAtMS0xLTM2MTk4L3RleHRyZWdpb246NzZhNjQyZWY0ZGM3NDA3NzgwN2FkMmE5MjZjNjYxNzZfNw_fa95cd3a-2a35-48c8-a09e-dcf62a6bcb0f">San Jose</ix:nonNumeric>, <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityAddressStateOrProvince" format="ixt-sec:stateprovnameen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8zLTAtMS0xLTM2MTk4L3RleHRyZWdpb246NzZhNjQyZWY0ZGM3NDA3NzgwN2FkMmE5MjZjNjYxNzZfMTE_e121cceb-d46f-4bc1-bf9f-fef303c97e03">California</ix:nonNumeric></span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">(Address of Principal Executive Offices)</span></div></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityAddressPostalZipCode" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8zLTItMS0xLTM2MTk4L3RleHRyZWdpb246M2E5NGVkYjEwNTUwNDhkYTg5OThmZmVlNWViMTIwYmJfNA_aec57d98-d52c-49fc-8411-875154178d15">95134</ix:nonNumeric></span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">(Zip Code)</span></div></td></tr><tr><td colspan="9" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Registrant&#8217;s telephone number, including area code (<ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:CityAreaCode" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF80LTAtMS0xLTM2MTk4L3RleHRyZWdpb246MzgyZDBhYjdlMzlhNDJiMWIxYzVkZDQ3ODQzMDZkNTVfNTY_9994208c-c7ef-4913-adbc-afa7decebaa3">408</ix:nonNumeric>)&#160;<ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:LocalPhoneNumber" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF80LTAtMS0xLTM2MTk4L3RleHRyZWdpb246MzgyZDBhYjdlMzlhNDJiMWIxYzVkZDQ3ODQzMDZkNTVfNjA_0df80c00-27b3-48be-b13d-bf376e411aca">514-3000</ix:nonNumeric></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Securities registered pursuant to Section&#160;12(b) of the Act:</span></div></td></tr><tr style="height:5pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline">Title of each class</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline">Trading symbol</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline">Name of each exchange on which registered</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:Security12bTitle" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF83LTAtMS0xLTM2MTk4_6238221b-6641-4888-8a00-a90509ee8df2">Common Stock, $0.025 par value</ix:nonNumeric></span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:TradingSymbol" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF83LTEtMS0xLTM2MTk4_9d49b0bc-fae4-44d5-be35-41b68b2624fa">CALX</ix:nonNumeric></span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:SecurityExchangeName" format="ixt-sec:exchnameen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF83LTItMS0xLTM2MTk4_ad58b464-b4a2-4fd4-9883-f98b20598249">The New York Stock Exchange</ix:nonNumeric></span></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Securities registered pursuant to section 12(g) of the Act:</span></td></tr><tr><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">None</span></td></tr><tr><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(Title of class)</span></td></tr></table></div><div style="margin-top:4pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:98.900%"></td><td style="width:0.1%"></td></tr><tr style="height:5pt"><td colspan="3" style="border-bottom:2pt solid #000000;padding:0 1pt"></td></tr></table></div><div style="text-indent:24.75pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Indicate by check mark if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act.&#160;&#160;&#160;Yes:&#160;&#160;</span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:9pt;font-weight:400;line-height:120%">o</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;&#160;&#160;&#160;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityWellKnownSeasonedIssuer" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M180MzE_ecb1e392-6aa0-42ee-b4fa-e80d19686566">No</ix:nonNumeric></span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">:&#160;&#160;</span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:9pt;font-weight:400;line-height:120%">x</span></div><div style="margin-top:3pt;text-indent:24.75pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Indicate by check mark if the registrant is not required to file reports pursuant to Section&#160;13 or Section&#160;15(d) of the Act.&#160;&#160;&#160;Yes:&#160;&#160;</span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:9pt;font-weight:400;line-height:120%">o</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;&#160;&#160;&#160;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityVoluntaryFilers" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M181NzY_0610156e-1fe7-4f5c-852d-eadddba195c0">No</ix:nonNumeric></span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">:&#160;&#160;</span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:9pt;font-weight:400;line-height:120%">x</span></div><div style="margin-top:3pt;text-indent:24.75pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Indicate by check mark whether the registrant (1)&#160;has filed all reports required to be filed by Section&#160;13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that the registrant was required to file such reports), and (2)&#160;has been subject to such filing requirements for the past 90 days.&#160;&#160;&#160;&#160;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityCurrentReportingStatus" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M185MzE_9be853e6-9f5e-43fe-8c49-9ee386e2a3e1">Yes</ix:nonNumeric></span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">:&#160;&#160;</span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:9pt;font-weight:400;line-height:120%">x</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;&#160;&#160;&#160;No:&#160;&#160;</span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:9pt;font-weight:400;line-height:120%">o</span></div><div style="margin-top:3pt;text-indent:24.75pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Indicate by check mark whether the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T (&#167;232.405 of this chapter) during the preceding 12 months (or for such shorter period that the registrant was required to submit such files).&#160;&#160;&#160;&#160;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityInteractiveDataCurrent" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18xMjYw_a6230488-bde6-484b-9f4e-1ca8701eaeca">Yes</ix:nonNumeric></span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">:&#160;&#160;</span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:9pt;font-weight:400;line-height:120%">x</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;&#160;&#160;&#160;No:&#160;&#160;</span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:9pt;font-weight:400;line-height:120%">o</span></div><div style="margin-top:3pt;text-indent:24.75pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Indicate by check mark whether the registrant is a large accelerated filer, an accelerated filer, a non-accelerated filer, a smaller reporting company, or an emerging growth company. See the definitions of &#8220;large accelerated filer,&#8221; &#8220;accelerated filer,&#8221; &#8220;smaller reporting company,&#8221; and &#8220;emerging growth company&#8221; in Rule&#160;12b-2 of the Exchange Act.</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:95.175%"><tr><td style="width:1.0%"></td><td style="width:22.248%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.568%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.718%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:43.293%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.568%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:22.402%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.568%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:2.435%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityFilerCategory" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6MzhmNWNhZGQ3OGVmNDQzM2I0NjQzNjUyZGFmZTQxZjEvdGFibGVyYW5nZTozOGY1Y2FkZDc4ZWY0NDMzYjQ2NDM2NTJkYWZlNDFmMV8wLTAtMS0xLTM2MTk4_984c1a77-4cbf-4114-9eeb-1c5e4297ccc6">Large Accelerated Filer</ix:nonNumeric></span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#9746;</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accelerated Filer</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#9744;</span></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Non-accelerated filer</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#9744;</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Smaller&#160;Reporting&#160;Company</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntitySmallBusiness" format="ixt-sec:boolballotbox" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6MzhmNWNhZGQ3OGVmNDQzM2I0NjQzNjUyZGFmZTQxZjEvdGFibGVyYW5nZTozOGY1Y2FkZDc4ZWY0NDMzYjQ2NDM2NTJkYWZlNDFmMV8yLTctMS0xLTM2MTk4_2f213f54-5731-4671-8ee0-13624754792a">&#9744;</ix:nonNumeric></span></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Emerging Growth Company</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityEmergingGrowthCompany" format="ixt-sec:boolballotbox" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6MzhmNWNhZGQ3OGVmNDQzM2I0NjQzNjUyZGFmZTQxZjEvdGFibGVyYW5nZTozOGY1Y2FkZDc4ZWY0NDMzYjQ2NDM2NTJkYWZlNDFmMV80LTItMS0xLTM2MTk4_cd208603-c0f8-45be-97cc-d40ca928108e">&#9744;</ix:nonNumeric></span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr></table></div><div style="text-indent:24.75pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">If an emerging growth company, indicate by check mark if the registrant has elected not to use the extended transition period for complying with any new or revised financial accounting standards provided pursuant to Section 13(a) of the Exchange Act).    </span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:9pt;font-weight:400;line-height:120%">o</span></div><div style="margin-top:5pt;text-indent:24.75pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Indicate by check mark whether the registrant has filed a report on and attestation to its management&#8217;s assessment of the effectiveness of its internal control over financial reporting under Section 404(b) of the Sarbanes-Oxley Act (15 U.S.C. 7262(b)) by the registered public accounting firm that prepared or issued its audit report.    </span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:9pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:IcfrAuditorAttestationFlag" format="ixt-sec:boolballotbox" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18zMjQx_5c55ced4-5cc5-47a5-a965-24cee41b5618">&#9746;</ix:nonNumeric></span></div><div style="text-indent:24.75pt"><span><br/></span></div><div style="text-indent:24.75pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">If securities are registered pursuant to Section 12(b) of the Act, indicate by check mark whether the financial statements of the registrant included in the filing reflect the correction of an error to previously issued financial statements.   </span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:9pt;font-weight:400;line-height:120%">o</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:12pt;font-weight:400;line-height:120%">     </span></div><div style="text-indent:24.75pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Indicate by check mark whether any of those error corrections are restatements that required a recovery analysis of incentive-based compensation received by any of the registrant's executive officers during the relevant recovery period pursuant to Section 240.10D-1(b).</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:12pt;font-weight:400;line-height:120%">    </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:9pt;font-weight:400;line-height:120%">o</span></div><div style="margin-top:3pt;text-indent:24.75pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Indicate by check mark whether the registrant is a shell company (as defined in Rule&#160;12b-2 of the Exchange&#160;Act).&#160;&#160;&#160;&#160;Yes:&#160;&#160;<ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:EntityShellCompany" format="ixt-sec:boolballotbox" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18yMzQ2_390c594d-26be-4d3c-ad80-5d283ea52441">&#9744;</ix:nonNumeric>&#160;&#160;&#160;No:&#160;&#160;</span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:9pt;font-weight:400;line-height:120%">x</span></div><div style="margin-top:3pt;text-indent:24.75pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">The aggregate market value of the Common Stock held by non-affiliates of the registrant based upon the closing sale price on the New York Stock Exchange on July&#160;1, 2022, the last business day of the Registrant&#8217;s most recently completed second fiscal quarter, was approximately $<ix:nonFraction unitRef="usd" contextRef="ia8228bdbbce54d7c9624a78d5d2b980e_I20220701" decimals="-6" name="dei:EntityPublicFloat" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18yNjI1_9af110ec-80dd-4ae3-b513-5f638ba599e1">2,002</ix:nonFraction> million. Shares held by each executive officer, director and by each other person (if any) who owns more than 10% of the outstanding common stock have been excluded in that such persons may be deemed to be affiliates. This determination of affiliate status is not necessarily a conclusive determination for other purposes.</span></div><div style="margin-top:3pt;text-indent:24.75pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">As of February&#160;10, 2023, the number of shares of the registrant&#8217;s common stock outstanding was <ix:nonFraction unitRef="shares" contextRef="ieb250817b6e542ed8d81042a73b3771f_I20230210" decimals="INF" name="dei:EntityCommonStockSharesOutstanding" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18zMDIz_c3a0af2f-8586-4c1d-bbc5-c58e86c3b415">66,139,488</ix:nonFraction>.</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:254.25pt"><tr><td style="width:1.0pt"></td><td style="width:252.25pt"></td><td style="width:1.0pt"></td></tr><tr style="height:6pt"><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"></td></tr></table></div><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:DocumentsIncorporatedByReferenceTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18zMjM3_da8d6458-1343-40a5-8e82-5f9c51d17d78" escape="true"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">DOCUMENTS INCORPORATED BY REFERENCE</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Portions of the registrant&#8217;s definitive proxy statement for its 2023 annual meeting of stockholders are incorporated by reference in Items 10, 11, 12, 13 and 14 of Part&#160;III.</span></div></ix:nonNumeric><div style="margin-top:6pt;text-indent:24.75pt"><span><br/></span></div><div style="margin-top:6pt"><span><br/></span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div><span><br/></span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_7"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span><br/></span></div></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Calix, Inc.</span></div><div style="margin-top:9pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Form 10-K</span></div><div style="margin-bottom:6pt;margin-top:9pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">TABLE OF CONTENTS</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:11.052%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:78.402%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:7.246%"></td><td style="width:0.1%"></td></tr><tr><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%">PART I</span></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item&#160;1.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_16">Business</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_16">4</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item&#160;1A.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_19">Risk Factors</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_19">9</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item&#160;1B.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_22">Unresolved Staff Comments</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_22">24</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item 2.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_25">Properties</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_25">24</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item 3.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_28">Legal Proceedings</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_28">24</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item 4.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_31">Mine Safety Disclosures</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_31">24</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%">PART II</span></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item 5.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_37">Market for Registrant&#8217;s Common Equity, Related Stockholder Matters and Issuer Purchases of Equity Securities</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_37">25</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item 6.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_40">[Reserved]</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_40">26</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item 7.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_43">Management&#8217;s Discussion and Analysis of Financial Condition and Results of Operations</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_43">26</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item&#160;7A.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_58">Quantitative and Qualitative Disclosures About Market Risk</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_58">32</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item 8.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_61">Financial Statements and Supplementary Data</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_61">34</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item 9.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_127">Changes in and Disagreements with Accountants on Accounting and Financial Disclosure</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_130">59</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item&#160;9A.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_130">Controls and Procedures</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_130">59</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item&#160;9B.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_133">Other Information</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_133">59</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item&#160;9C.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_136">Disclosure Regarding Foreign Jurisdictions that Prevent Inspections</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_136">60</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%">PART III</span></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item 10.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_142">Directors, Executive Officers and Corporate Governance</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_142">60</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item 11.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_145">Executive Compensation</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_145">60</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item 12.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_148">Security Ownership of Certain Beneficial Owners and Management and Related Stockholder Matters</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_148">60</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item 13.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_151">Certain Relationships and Related Transactions, and Director Independence</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_151">60</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item 14.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_154">Principal Accountant Fees and Services</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_154">60</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%">PART IV</span></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item 15.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_160">Exhibits and Financial Statement Schedules</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_160">60</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Item 16.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_163">Form 10-K Summary</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_163">62</a></span></div></td></tr><tr style="height:6pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_166">Signatures</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_166">63</a></span></div></td></tr></table></div><div><span><br/></span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">2</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_10"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span><br/></span></div></div><div style="margin-top:6pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">SPECIAL NOTE REGARDING FORWARD-LOOKING STATEMENTS</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Calix, Inc., together with its subsidiaries, is referred to in this document as &#8220;Calix,&#8221; &#8220;we,&#8221; &#8220;our&#8221; or &#8220;us.&#8221; This report includes forward-looking statements that involve substantial risks and uncertainties. All statements other than statements of historical facts contained in this report, including statements regarding Calix&#8217;s future financial position, business strategy and plans, product projections, anticipated market and industry trends and objectives of management for future operations, are forward-looking statements. In some cases, you can identify forward-looking statements by terminology such as &#8220;believe,&#8221; &#8220;could,&#8221; &#8220;expect,&#8221; &#8220;may,&#8221; &#8220;estimate,&#8221; &#8220;continue,&#8221; &#8220;anticipate,&#8221; &#8220;intend,&#8221; &#8220;should,&#8221; &#8220;plan,&#8221; &#8220;predict,&#8221; &#8220;will,&#8221; &#8220;would,&#8221; &#8220;project,&#8221; &#8220;potential&#8221; or the negative of these terms or other similar expressions. Forward-looking statements include Calix&#8217;s expectations concerning the outlook for its business, productivity, plans and goals for future operational improvements and capital investments, operational performance, future market conditions or economic performance and developments in the capital and credit markets and expected future financial performance.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Forward-looking statements involve a number of risks, uncertainties and assumptions, and actual results or events may differ materially from those projected or implied in those statements. Important factors that could cause such differences include:</span></div><div style="margin-top:5pt;padding-left:22.5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:91.228%"><tr><td style="width:0.1%"></td><td style="width:1.883%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:96.817%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">our ability to predict our revenue and reduce and control costs related to our products or service offerings;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">fluctuations in our gross margin;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">our ability to manage our relationships with our third-party vendors, including contract manufacturers, or CMs, original design manufacturers, or ODMs, logistics providers, component suppliers and development partners;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">our ability to forecast our manufacturing requirements and manage our inventory;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">supply chain constraints and cost increases for components, shipping and logistics, which may continue to cause component shortages, longer lead times, supply interruptions and significant cost increases, and which may be exacerbated by the COVID-19 pandemic, our dependence on sole-, single- and limited-source suppliers, some of which are located primarily or solely in China, and other factors;</span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">our ability to build and sustain an adequate and secure information technology infrastructure;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">the quality of our products, including any undetected hardware and software defects or software bugs;</span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">our ability to ramp sales and achieve market acceptance of our new products and broadband service providers&#8217;, or BSPs&#8217;, willingness to deploy our new products;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">the capital spending patterns of BSPs, and any decrease or delay in capital spending by BSPs due to macro-economic conditions, regulatory uncertainties or other reasons;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">the impact of government-sponsored programs on our customers and the impact to our customers of a United States, or U.S., government shutdown;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">our ability to develop new products or enhancements that support technological advances and meet changing BSP requirements;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">the length and unpredictability of our sales cycles and timing of orders;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">our lack of long-term, committed-volume purchase contracts with our customers;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">intense competition and our ability to increase our sales to larger BSPs globally;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">our exposure to the credit risks of our customers;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">the interoperability of our products with BSP networks;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">our ability to estimate future warranty obligations due to product failure rates;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">our products&#8217; compliance with industry standards;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">our ability to expand our international operations;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">our ability to protect our intellectual property, or IP, and the cost of doing so;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">our ability to obtain necessary third-party technology licenses at reasonable costs;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">the regulatory and physical impacts of climate change and other natural events;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">the attraction and retention of qualified employees and key management personnel; and</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8226;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">our ability to maintain proper and effective internal controls.</span></td></tr></table></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We caution you against placing undue reliance on forward-looking statements, which reflect our current beliefs and are based on information currently available to us as of the date a forward-looking statement is made. Forward-looking statements set forth in this Annual Report on Form 10-K speak only as of the date of its filing. We undertake no obligation to revise forward-looking statements to reflect future events, changes in circumstances or changes in beliefs. In the event that we do update any forward-looking statements, no inference should be made that we will make additional updates with respect to that statement, related matters or any other forward-looking statements.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">3</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_13"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">PART I</span></div><div><span><br/></span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_16"></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 1.&#160;&#160;&#160;&#160;Business</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Company Overview</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Calix was founded in 1999. We develop, market and sell our Calix platform (cloud, software and systems) and managed services that enable service providers of all types and sizes to innovate and transform their businesses. For our customers to successfully transform their businesses into the innovative broadband service providers, or BSPs, of the future, they require actionable data for critical business functions such as network operations, customer support and marketing. However, this data is often trapped in disparate systems or departmental silos. Our Calix platform, which includes Calix Cloud, Revenue EDGE and Intelligent Access EDGE, gathers, analyzes and applies machine learning to deliver real-time insights seamlessly to each key business function. Our customers utilize these data and insights to simplify network operations, marketing and customer support and deliver experiences that excite their subscribers. This enables BSPs to grow their brand through increased subscriber acquisition, loyalty and revenue and to reduce their operating costs, creating value for their businesses and the communities they serve.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">This is our mission: to enable BSPs of all sizes to simplify, excite and grow.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We believe our platform offers a competitive edge to BSPs at a critical time of increasing competition from direct-to-consumer cloud companies and device providers as they expand their reach and focus on owning the connected home experience. For example, these competitors are entering the home by offering Wi-Fi enabled devices, and then leveraging behavioral insights to expand their direct relationship and build their brand with the subscriber by offering additional consumer services. Over time, we expect this competition can erode a BSP&#8217;s brand and relationship with its subscribers, by reducing broadband to an easy-to-replace commodity, which can increase churn and reduce revenue. Our platform enables BSPs to build next generation networks and offer higher-value managed services offerings that enable them to grow revenue, increase subscriber loyalty and monetize their network investments.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Innovative BSPs, who are embracing our platform, understand this competitive threat and that their brand&#8217;s central position in the home is their most valuable strategic asset. As such, they must protect and expand continually. Our Intelligent Access EDGE network solution and Revenue EDGE subscriber solution are designed to allow BSPs to simplify their businesses and reduce operating costs, while launching exciting new services in a matter of days and weeks instead of months and years. Our role-based cloud enables BSP teams, such as marketing, operations or customer support, to leverage real-time behavioral analytics to anticipate the subscriber&#8217;s needs, whether that is optimized broadband speed, managed Wi-Fi or a new, differentiated managed service offering such as home network security, content control and connected cameras. Our platform is built to enable BSPs to deploy a growing ecosystem of third-party solutions such as Arlo Secure and Bark Social as fully managed services quickly and easily. This enables the BSP to add significant value to what were previously just &#8220;over-the-top&#8221; solutions. We are also enabling deeper integration with workflow solutions such as Facebook and solutions from independent software vendors such as National Information Solutions Cooperative, or NISC. This level of integration enables BSPs to simplify and streamline their operations and go-to-market execution.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The BSPs&#8217; teams can then utilize insights from Calix Cloud to offer these new and innovative services to those subscribers who have the propensity to buy, thereby growing revenue as they deliver a connected home experience at significantly lower operating costs. This also enables them to build their brand and value proposition around innovation and subscriber experience.  As a result, many of Calix&#8217;s BSP customers have experienced improved customer satisfaction scores, minimal churn and significant growth. To expand our reach in the market, we will continue to pursue strategic technology and distribution relationships that align with BSPs&#8217; strategic priorities. At the same time, we offer our Calix Customer Success and Support Services along with a growing portfolio of market activation resources that provide the BSPs with best practices and programs to strengthen and grow their brand with their subscribers, thereby increasing subscriber loyalty and opportunities to grow their subscriber base.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Strategy Overview</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our strategy is to position Calix as the key partner providing a broadband delivery platform (cloud, software and systems) and managed services to enable and facilitate the transformation of BSP access networks and the home network experience in order to provide an exceptional broadband experience for their subscribers. Most BSPs will require significant transformation of their business and operations to become an essential provider of data-driven, high-value managed services to their subscribers. The principal elements of our strategy are:</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">4</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:115%">Starting with the data</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"> &#8211; The principal way we gather, analyze and deliver actionable insights for BSPs is via the Calix Cloud. Our role-based Calix Cloud enables critical functions within a BSP&#8217;s business, such as marketing, operations and support, to leverage real-time data to continually understand and optimize the experience for their subscribers.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:115%">Building and evolving our platform</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"> &#8211; Our product strategy centers on our strategic platform. Our platform simplifies BSPs&#8217; businesses by delivering intelligence and automation across the entire subscriber facing network &#8211; from the data center edge to the subscriber&#8217;s devices. Our strategy is to continually augment and extend our platform with features and services directly or through partners to allow our BSP customers to deliver cutting-edge services to their subscribers.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:115%">Engaging directly with customers</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"> &#8211; We continue to invest in our direct sales capabilities so that we can engage deeply with our customers to help them understand the differentiable value that our platform provides. As we deploy new solutions, we are building the expertise of our team by adding specialized resources in areas such as marketing, cloud and network operations. Our direct model is complemented with selective programs for our channel partners, who have established local market expertise and have demonstrated the ability to generate new market opportunities and support sales of cutting-edge technologies for BSPs.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:115%">Expanding customer footprint across our total addressable opportunity</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"> &#8211; Our total addressable opportunity includes service providers of any type and size, including local and competitive exchange carriers, cable multiple system operators, or cable MSOs, wireless internet service providers, or WISPs, fiber overbuilders such as municipalities and electric cooperatives and hospitality providers. We have added over 100 new BSP customers per year for the past three years purchasing directly or through our partners. Our diverse and growing customer footprint is a critical source of our future growth as we expand our portfolio and sell additional components of our platform and managed services to both new and existing customers. Our platform expands our total addressable opportunity and recurring revenue streams by allowing us to address the needs of not only traditional wireline-focused service providers, but also emerging service providers. As such, we intend to continue to engage emerging providers that are creating entirely new customer segments, including fiber overbuilders, utilities and municipalities. We will also continue to pursue service provider segments where there is an opportunity to grow our current share, such as cable MSOs, large traditional wireline-focused service providers and international markets.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:115%">Extending portfolio of Calix services </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">&#8211; Our services team, Calix Services, supports our BSPs as they define their transformation strategies, build new skills, implement new technologies and deploy new subscriber services. Calix Services&#8217; capabilities address the BSP&#8217;s entire network and service delivery lifecycle. These services allow BSPs to benefit directly from our deep expertise working with service providers to optimize their operations and leverage our advanced analytics to improve the operational efficiency of their teams.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:115%">Pursuing strategic relationships</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"> &#8211; We will continue to pursue strategic technology and distribution relationships that help us align with BSPs&#8217; strategic priorities. We continue to invest to provide interoperability across the ecosystems that support our customers&#8217; most critical business processes through our partner programs. By adding new solutions to our platform ecosystem, we significantly enhance the value that our platform delivers to BSPs. In addition, we are expanding our relationships with organizations that help our customers plan and execute in market. Examples of these partners are Conexon Connect, LLC, CCI Systems, Inc. and The Pivot Group, LLC.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:115%">Product Overview</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our product strategy centers on increasing the market adoption of our platform, which consists of:</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt">Calix Cloud</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.47pt;font-weight:400;line-height:120%;position:relative;top:-3.48pt;vertical-align:baseline">&#174;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">, which comes in three role-base editions: Calix Marketing Cloud, Calix Support Cloud and Calix Operations Cloud;</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt">Calix Revenue EDGE, our premises solution for subscriber managed services; and</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt">Calix Intelligent Access EDGE, access network solution for automated, intelligent next generation networks.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">These platform offerings are sold independently and offer unique entry points for new customers who are partnering with Calix to transform their businesses. However, an increased segment of our customers is leveraging all three components of our platform in an end-to-end strategy to simplify their businesses, excite their subscribers and grow the value that they deliver for their subscribers and communities.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">The Revenue EDGE</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Revenue EDGE is a subscriber experience solution designed to enable BSPs to rapidly deploy new subscriber services to grow their businesses. The platform is built on Experience Innovation Platform component (formerly known as EXOS) and fully integrated with our GigaSpire</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.47pt;font-weight:400;line-height:120%;position:relative;top:-3.48pt;vertical-align:baseline">&#174;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> and GigaPro</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.47pt;font-weight:400;line-height:120%;position:relative;top:-3.48pt;vertical-align:baseline">&#174; </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">family of systems to be ready for deployment as a complete subscriber experience platform for a BSP&#8217;s residential subscribers, small business subscribers and community networks.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Revenue EDGE also integrates real-time subscriber insights via our Calix Marketing Cloud, Calix Support Cloud and Calix Operations Cloud offerings, which are configurable to display role-based insights. These insights enable BSPs to anticipate and </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">5</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">target new revenue-generating services and applications through our mobile application, CommandIQ</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.47pt;font-weight:400;line-height:120%;position:relative;top:-3.48pt;vertical-align:baseline">&#174;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">, and expanding portfolio of managed services. Our Cloud enables simple integrations with other market leading workflow solutions for Marketing, including Facebook, Mailchimp, Constant Contact and HubSpot, support ticketing solutions and operations support systems and business support systems to further simplify BSP processes and accelerate their time to market.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Calix customers are evolving their go-to-market strategies to go beyond marketing broadband speed. Increasingly, they are becoming &#8220;experience&#8221; providers by delivering valuable managed services built on top of their Wi-Fi offerings. To date, Calix has launched nine managed services. This unique portfolio gives BSPs more opportunities to provide differentiated services to their subscribers and grow their revenue.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Revenue EDGE managed services portfolio enables BSPs to enter new markets for small businesses and communities, as well as expand their residential footprints. By leveraging the power of the Calix platform, BSPs of any size can simplify their businesses, excite their subscribers and grow value in their communities.</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt">Managed Wi-Fi enables BSPs to actively manage all aspects of the subscriber&#8217;s Wi-Fi experience, ensuring they enjoy improved speeds, performance and Wi-Fi coverage that extends throughout their homes.</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt">Command</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">IQ</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> is an intuitive mobile app designed to be branded by each BSP and provides their subscribers with visibility and control to understand and manage their connected experience.</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt">Experience</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">IQ</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> offers the subscriber a full set of tools to manage and monitor each connected device in the home and the content it has access to.</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt">Protect</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">IQ</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> is a network-level security application that works quietly in the background and proactively keeps malicious websites, viruses and intrusions away from subscribers&#8217; homes 24x7.</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt">Arlo Secure, a third-party application, enables BSPs to offer peace of mind to their subscribers with a fully managed connected camera solution.</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt">Bark, a third-party application, is an integrated cutting-edge social monitoring service that scans over 30 of the most popular apps and social media platforms to alert parents and caregivers of issues like cyberbullying, online predators and sexual content.</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt">Servify Care, a third-party application, enables BSPs to protect all eligible devices in a home under the same easy-to-use plan and potentially save subscribers hundreds of dollars annually.</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt">SmartTown is an innovative solution to enable BSPs of any size to connect people with private, secure and safe Wi-Fi experiences in town, at parks, at outdoor events and on the go.</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:14.5pt">SmartBiz is an all-in-one integrated managed service to deliver a purpose-built, broadband solution to address the needs of the 34 million small businesses across the United States and Canada.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Finally, to support these managed services, we offer Market Activation resources and programs to enable BSP teams to quickly deploy, manage and monetize each service that they provide to subscribers. These resources include marketing content that can be easily customized with on-line tools, training programs, success services and professional services.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:115%">The Intelligent Access EDGE</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">The Intelligent Access EDGE solution is built on the award-winning Network Innovation Platform component (formerly known as AXOS) and redefines the access edge of the network by simplifying its architecture and operations. The Network Innovation Platform component is implemented in our E-Series family of modular, non-blocking systems, enabling BSPs to meet a wide variety of deployment scenarios.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">The Intelligent Access EDGE allows BSPs to collapse multiple network elements in the access network into a single system and by using specialized software modules to add functionality and remove complexity, the solution reduces the total cost of ownership and the time to market for new services.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">In addition, insights delivered through Calix Operations Cloud enable BSPs to monitor network performance more effectively and address performance issues more efficiently. Intelligent Access EDGE Enablement services are designed to ensure BSP teams are fully enabled to deploy and manage next generation networks. We offer a range of training, professional and success services to assist BSPs in every domain of network management from strategy to deployment and management.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">6</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Traditional Products</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We continue to support and offer customers our traditional family of EXA and GigaCenter</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.47pt;font-weight:400;line-height:120%;position:relative;top:-3.48pt;vertical-align:baseline">&#174;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> Systems that are widely deployed in customer networks, primarily in North America. We expect that these products will continue to be utilized in our customers&#8217; networks in addition to our newer platform offerings.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Customers</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We market and sell our platform (cloud, software and systems) and managed services to service providers of all types and sizes. To date, we have focused primarily on service providers in the North American market. Our customers span all sizes of broadband subscriber count from a few hundred to more than six million. We have enabled approximately 1,900 service providers, purchasing directly and through partners, to deploy passive optical, Active Ethernet and point-to-point Ethernet fiber access networks. Our service provider customers include: ALLO Communications; Connect Holding II, LLC (dba Brightspeed); CityFibre Holdings Limited; Conexon Connect; Cox Communications; Gibson Connect, LLC; Jade Communications; Lumen Technologies, Inc. (formerly known as CenturyLink, Inc.), or Lumen; Paul Bunyan Communications; Silver Star Communications; TDS Telecommunications LLC; Windstream Holdings, Inc. and Verizon Communications, Inc.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The U.S. Federal government has approved programs, totaling more than $60 billion, to fund broadband and connectivity expansion across the United States. Calix has a dedicated team of funding specialists, assisting our customers with the most up-to-date information on broadband funding opportunities as they are introduced and personalized strategies to maximize their grants to support their growth.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We classify service providers into large, medium and small based on the number of broadband subscribers they serve. Large service providers are those with wide geographic footprints and broadband subscribers of 2.5 million or more. Medium service providers also operate typically within a wide geographic footprint but are smaller in scale with broadband subscribers that range from 250,000 to 2.5 million. Small service providers consist primarily of over 1,000 predominantly local independent operating companies, or IOCs, typically focused on a single community or a cluster of communities. They include a growing number of municipalities, electric cooperatives, fiber overbuilders and WISPs. These entities range in size from a few hundred to 250,000 broadband subscribers.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Historically, Lumen accounted for more than 10% of revenue and represented 11% of revenue in 2020. Our efforts to grow our Calix platform, add new BSP customers and shift away from low-value deployment services primarily related to Lumen have all contributed to Lumen representing less than 10% of our revenue in 2022 and 2021. No other customer represented more than 10% of revenue in 2022, 2021 and 2020. Sales to customers outside the United States represented 9% of our revenue in 2022, 17% of our revenue in 2021 and 13% of our revenue in 2020. Our sales outside the United States have been and are currently predominantly to customers in the Americas and Europe.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Customer Engagement Model</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We market, sell and support the success of our platform (cloud, software and systems) and managed services predominantly through our direct sales force, supported by marketing, product management and customer success personnel. We have also expanded this model to include select channel partners in North America and more than 40 international channel partners. Even in circumstances where a channel partner is involved, our sales and marketing personnel are generally selling side-by-side with the channel partner. We believe that our direct customer engagement approach provides us with significant differentiation in the customer sales process and customer engagement programs by aligning us more closely with our customers&#8217; changing needs and successful implementation of our solutions.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Research and Development</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Continued investment in research and development is critical to our business. We have made significant investments in our product portfolio, and we intend to continue to dedicate significant resources to research and development to develop, enhance and deliver new platform features and capabilities, including investments in innovative technologies that support our business strategy. Our research and development team is composed of engineers with expertise in software and cloud platforms, optics, wireless technologies and systems engineering. Our research and development team is responsible for designing, developing and enhancing our platform and managed services, performing product and quality assurance testing and ensuring the compatibility of our products with third-party hardware and software products. Increasingly, our engineers are focused on enhancements to our cloud and software platform components. Our teams of engineers currently remain concentrated in San Jose and Petaluma, California; Bangalore, India; Minneapolis, Minnesota; Nanjing, China; and Richardson, Texas. We also outsource a portion of our software and cloud development to domestic and international third parties, and we depend on these partners to meet our development plans.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">7</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Manufacturing and Supply Chain</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We rely on contract manufacturers, original design manufacturers, original equipment manufacturers and third-party logistics partners for the supply and distribution of our products. Our global supply chain management organization oversees these third parties to source and procure materials, manufacture and deliver our products. Our global supply chain management organization consists of order management, planning, sourcing, logistics, test and manufacturing engineers and new product introduction personnel. We tightly integrate our supply chain management and new product introduction activities with the activities outsourced to these third parties. We believe that our relationships with and our reliance on third parties allow us to improve new product introduction time, conserve working capital, reduce product costs and minimize delivery lead times while maintaining high product quality as well as the ability to scale quickly to handle increased order volume. We continue to qualify and utilize other vendors for various portions of our supply chain from time to time.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As a result of the current semiconductor and other component shortages, global restrictions and uncertainty related to the COVID-19 pandemic, we have experienced product supply delays as we and our supply chain partners experience longer lead times and shortages of components and materials. We believe the impact of these shortages will continue to impact the ability of our third-party manufacturers to supply products to us at the cost and in the time frames and volumes required by us. Although global logistics and transport services have begun to improve, we continue to monitor potential challenges in managing these areas to ensure consistent delivery to our customers.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Seasonality</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Fluctuations in our revenue occur due to many factors, including the varying budget cycles and seasonal buying patterns of our customers. More specifically, our customers tend to spend less in the first fiscal quarter as they are finalizing their annual capital spending budgets, and in certain regions, customers are also challenged by winter weather conditions that inhibit outside fiber deployment. In recent years, as our revenue from our large customers decreased, we have experienced less year-end volatility due to capital budgetary spending or freezing. This combined with an increase in recurring revenue has resulted in smaller seasonal fluctuations, and we expect this trend to continue.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Competition</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The communications software and systems equipment markets are highly competitive. Competition is largely based on any one or a combination of the following factors: functionality and features, price, existing business and customer relationships, product quality, installation capability, service and support, long-term returns, scalability, development and manufacturing capability.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We compete with several companies within the markets that we serve, and we anticipate that competition will intensify. Vendors with which we compete include: ADTRAN, Inc.; Ciena Corporation; CommScope Inc.; DZS Inc.; eero/Ring (Amazon companies); Huawei Technologies Co., Ltd.; Google Nest (a Google company); Nokia Corporation; Plume Design, Inc. and Ubiquiti Inc. In various geographic or vertical markets, there are also several smaller companies with which we compete. As we expand into adjacent markets, we expect to encounter new competitors. Many of our competitors have the financial resources to offer competitive products at a below market price, which could prevent us from competing effectively.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Intellectual Property</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We rely on a combination of intellectual property, or IP, rights, including patents, trade secrets, copyrights and trademarks as well as customary contractual protections. These rights and protections are accomplished through a combination of internal and external controls, including contractual protections with employees, contractors, customers and partners, and through a combination of U.S. and international IP laws.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December 31, 2022, we held 110 U.S. patents and have seven pending U.S. patent applications. As of December 31, 2022, we had no pending international patent applications. U.S. patents generally have a term of twenty years from filing. The remaining terms on our individual patents vary from less than a year to seventeen years. U.S. patent, copyright and trade secret laws afford us only limited protection, and the laws of some foreign countries do not protect proprietary rights to the same extent.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We believe that the frequency of assertions of patent infringement has and continues to increase in our industry. Any claim of infringement from a third party, even claims without merit, could cause us to incur substantial costs defending against such claims, could require us to pay substantial damages or include an injunction or other court order that could prevent us from selling our products. In addition, we might be required to seek a license which may not be available on commercially reasonable terms or at all. Alternatively, we may be required to develop non-infringing technology, which would require significant effort and expense.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">8</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Human Capital</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We employed 1,426 employees globally as of December 31, 2022 with 930 employees located in the United States and 496 outside of the United States, primarily in Canada, China and India. Except for one employee located in France and subject to customary local collective bargaining arrangements, we do not have any employees represented by a labor union with respect to their employment with us. We have not experienced any work stoppages and consider our relations with our employees to be good. We consider our talent to be very important to our operations and execution of our business strategy as well as the overall success of our business. As such, we invest significant management attention, time and resources to attract, engage, develop and retain our talent. Our talent strategy focuses on our culture and core values, our talent programs and the overall well-being and safety of our talent.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our culture and core values.</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> We believe that by nurturing a robust culture based on our core values we can attract, hire and retain a highly skilled and engaged team. Our cultural pillars &#8211; to collaborate, create and communicate &#8211; reflect the way we lead and work with one another internally as well as externally with our customers, partners, suppliers and other stakeholders. We seek to embed our core values to act responsibly and with integrity, to instill a sense of individual roles and purpose at Calix, to communicate openly and honestly and to &#8220;take care of our own&#8221; in how we lead and conduct our business. Our culture of collaboration creates an inclusive working environment and inclusive engagement with our stakeholders; our culture to create encourages innovation from diverse experiences, backgrounds and characteristics; and our culture to communicate encourages open and honest discussion.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our talent programs.</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> We invest in talent programs to identify and hire candidates who embody our culture and core values and will further our mission. We focus on onboarding and assimilating our hires into the Calix culture while encouraging them to express their own diverse views and talents, in turn strengthening our culture. Although we do have facilities for our employees, we embrace a &#8220;work from anywhere&#8221; environment which allows us to hire top talent regardless of their physical location. Our total rewards programs are designed to foster an energized, engaged, motivated and high-performing workforce. We hire and compensate our talent based on their role, experiences, contributions and performance, regardless of their gender, race or ethnic background or other personal characteristics. For example, our current programs include cash incentive bonuses designed to reward corporate and individual performance and cash bonus opportunities for internal promotions to senior leadership roles. We offer performance stock option grants for senior executives, and because we believe stock ownership rewards employees for corporate performance aligned to our stockholders&#8217; interests, we offer two separate employee stock purchase plans. Our programs are regularly reviewed and adjusted based on benchmarks against competitive industry programs. We encourage open communication with our teams and reference third-party administered surveys to improve how we engage with and support our talent. We also believe that continuous learning is core to ensuring our on-going success and have invested in multiple on-demand learning platforms and other knowledge resources and tools that are available to all employees globally.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our wellness, safety and health programs.</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> A centerpiece of our culture is &#8220;taking care of our own,&#8221; which means we foster a collaborative and supportive environment so that every member of our team can thrive. This mindset starts with our CEO and is embedded in how we lead as well as in our wellness, safety and health programs. Our programs seek to support wellbeing broadly, with comprehensive physical and mental health and financial benefit offerings, that include various time off programs as well as reimbursement benefits and a remote office program.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Corporate Information</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our principal executive offices are located at: 2777 Orchard Parkway, San Jose, California 95134, and our telephone number is: (408) 514-3000. Our website address is: www.calix.com. We do not incorporate the information on or accessible through our website into this Annual Report on Form 10-K, and you should not consider any information on, or that can be accessed through, our website as part of this Annual Report on Form 10-K. Calix</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">&#174;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">, the Calix logo design, AXOS</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">&#174;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">, Calix Cloud</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">&#174;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">, CommandIQ</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">&#174;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">, EXOS</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">&#174;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">, GigaCenter</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">&#174;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">, GigaSpire</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">&#174;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> and other trademarks or service marks of Calix appearing in this Annual Report on Form 10-K are the property of Calix. Trade names, trademarks and service marks of other companies appearing in this Annual Report on Form 10-K are the property of the respective holders. The Securities and Exchange Commission, or SEC, maintains a website at www.sec.gov that contains reports, proxy statements and other information regarding issuers that file electronically with the SEC. We post on the Investor Relations page of our website, www.calix.com, a link to our filings with the SEC free of charge, as soon as reasonably practical after they are filed electronically with the SEC.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_19"></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 1A.</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%;padding-left:28.14pt"> Risk Factors</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">We have identified the following additional risks and uncertainties that may affect our business, financial condition and/or results of operations. Investors should carefully consider the risks described below, together with the other information set forth in this Annual Report on Form 10-K, before making any investment decision. The risks described below are not the only ones we face. Additional risks not currently known to us or that we currently believe are immaterial may also significantly impair our business operations. Our business could be harmed by any of these risks. The trading price of our common stock could decline due to any of these risks, and investors may lose all or part of their investment.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">9</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Business and Operational Risks</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:115%">We face risks associated with being materially dependent upon third-party vendors; certain factors that affect our business as a result of those dependencies have in the past and could continue to disrupt our business and adversely impact our gross margin and results of operations.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">We materially depend upon third-party vendors for our complex global supply chain operations, including for services to develop, design and source components and materials, as well as manufacture, transport and deliver our products. If any of these vendors stop providing their services, for any reason, we would have to obtain similar services from other sources, which may not be available on commercially reasonable terms, if at all. We also have limited control over disruptions that may occur at the facilities of those providers, such as supply interruptions, labor shortages, strikes, shipping backlogs at ports and similar disruptions to transportation infrastructure, design and manufacturing failures, quality control issues, systems failures or even facility closures arising from the COVID-19 pandemic or natural disasters. In addition, switching development firms or manufacturers could delay the manufacture and availability of products and/or require us to re-qualify our products with our customers, which would be costly and time-consuming. Any interruption in the development, supply or distribution of our products would adversely affect our ability to meet scheduled product deliveries to our customers and could result in lost revenue or higher costs, which would negatively impact our gross margin and operating results and harm our business.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Particular risks associated with management of our global supply chain operations include the following:</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%;padding-left:14.5pt">Manufacturing constraints, shortages and other disruptions.</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> We do not have internal manufacturing capabilities and rely solely on a small number of CMs and ODMs to manufacture and supply our products. Our business operations and ability to supply our products are highly dependent upon our ability to secure adequate third-party manufacturing capabilities and capacity and to effectively manage those third parties to meet our business needs. Our dependence solely on third-party manufacturers makes us vulnerable to possible supply and capacity constraints and reduces our control over manufacturing disruptions due to component availability, extended lead times delivery schedules, quality, manufacturing yields and increased costs. Some of these risks have occurred from time to time in our business, including recent unforeseen increases in component costs. If these disruptions and constraints are prolonged, or if these manufacturers do not have the ability or business continuity plans to fulfill their obligations to us, our business could be disrupted. If we cannot effectively manage our vendors or if we fail to invest adequate resources to manage our supply chain operations, our ability to meet customer orders and generate revenue may be negatively impacted. A substantial portion of our manufacturing is done at facilities outside of the U.S., largely in Asia, which presents increased supply risk, including the risk of supply interruptions, delays, shortages or reductions in manufacturing quality or controls. In addition, these supply interruptions, delays and shortages could impair our ability to meet our customer requirements, require us to pay higher prices or incur expedite fees, which would harm our business and negatively impact our gross margin and results of operations. Our international manufacturing also creates risks and uncertainties associated with regulatory changes or government actions such as local business requirements, trade restrictions and tariffs, economic sanctions or related legislation, which may complicate our export and import activities, be disruptive to the operations of our manufacturers and logistics partners or result in higher product and shipping costs and variability of supply. For example, substantially all our silicon suppliers have extended their lead times to 52 weeks or more and increased prices. Manufacturing in Asia further heightens our risk of meeting customer delivery requirements as we rely upon third-party logistics companies to transport and import significant volumes of products to the U.S. where we generate a substantial majority of our revenue. These supply chain risks are further increased by periodic shipping backlogs at ports and similar disruptions to transportation infrastructure.</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%;padding-left:14.5pt">Limited sources and sole-sourced supply.</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We are dependent upon sole-source or limited-source suppliers for some key product components such as chipsets and certain of our application-specific integrated circuit processors and resistor components, including certain components sourced solely through suppliers located in China and other Asian countries. Any of these suppliers could stop producing our components, raise the prices they charge us, be subject to higher product tariffs, epidemics or other conditions that disrupt their operations, cease operations or enter into exclusive arrangements with our competitors, consequently affecting our operations and results. For example, we have experienced disruptions in our supply of certain components that we source from suppliers in China and other Asian countries, causing delays in supply of our products due to production disruptions, factory closures and longer lead times for components and from uncertainty around trade and tariff policies between the U.S. and China. Being dependent upon a limited number of suppliers constrains our ability to mitigate these disruptions in our supply chain and such disruptions, particularly if prolonged. This may adversely affect our ability to obtain components and materials needed to manufacture our products at acceptable prices or at all. These risks would adversely affect our ability to meet scheduled product deliveries to our customers, increase costs and in turn harm our business and results of operations.</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%;padding-left:14.5pt">Limitations on ability to manage third-party risks.</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> Our business with third-party manufacturers typically represents a relatively small percentage of their total revenue. Consequently, our orders may not be given adequate priority if such </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">10</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt;padding-left:36pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">manufacturers have to allocate limited capacity among competing customers. This could delay supplies of product to us or limit our ability to ramp product volumes within desired timeframes. If any of our manufacturing partners are unable or unwilling to continue manufacturing our products in required volumes and at high quality levels, we would have to identify, qualify and select acceptable alternative manufacturers. Having to take the time to qualify new third-party manufacturers could disrupt our ability to maintain continuous supply of product to meet customer requirements. An alternative manufacturer may not be available to us when needed or may not be in a position to satisfy our production requirements at commercially reasonable prices and quality. In addition, we and/or our manufacturers may not be able to negotiate commercially reasonable terms and sufficient quantities of component supplies with component and materials suppliers to meet our manufacturing needs because our purchase volumes may be too low for us to be considered a priority customer for securing supplies, particularly when there are shortages or limited availability of key components and materials. As a result, suppliers could stop selling to us and our manufacturers at commercially reasonable prices, or at all. We have worked to mitigate the cost impact of recent price increases, but those efforts may not be successful. Any such interruption or delay may force us and our manufacturers to seek components or materials from alternative sources, which may not be available, or result in higher prices. Switching suppliers could also force us to redesign our products to accommodate new components and could require us to re-qualify our products with our customers, which would be costly and time consuming. A significant interruption in manufacturing or supply availability for any of these reasons would reduce supply to our customers, which would result in lost revenue and harm our customer relationships.</span></div><div style="margin-top:6pt;padding-left:36pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%;padding-left:14.5pt">Ability to forecast and manage inventory liability with vendors.</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> We have experienced unanticipated increases in demand from customers, in part as a result of higher consumer demand for internet services and improved Wi-Fi; in turn, this has resulted in our shipments being delayed. If we underestimate product demand from our customers, our manufacturers may have inadequate component inventory to meet our demand. If we are not able to adequately anticipate demand, this could interrupt our product manufacturing, increase our cost of revenue associated with expedite fees and air freight and/or result in delays or cancellation of customer orders. If we are unable to deliver products timely to our customers, we may lose customer goodwill or our customers may choose to purchase from other vendors, all of which may have a material negative impact on our revenue and operating results. If we overestimate our product demand, our third-party manufacturers may purchase excess components and build excess inventory, and we could be required to pay for these excess parts or products and their storage costs. Long lead times for component supply, which have been magnified by factory closures and shortages due to the COVID-19 pandemic as well as higher demand for certain components, and unanticipated demand for our products have in the past and are expected to continue to impact our ability to accurately forecast our production requirements. We may incur liabilities for certain component inventory purchases that have been rendered excess or obsolete, which may have an adverse effect on our gross margin, financial condition and results of operations.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:115%">Security breaches and data loss may expose us to liability, harm our reputation and adversely affect our business.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">As part of our business operations, we collect, store, process, use and/or disclose sensitive data relating to our business, including in connection with the provision of our cloud services and in our information systems and data centers (including third-party data centers). We also engage third-party providers to support various internal functions, such as human resources, finance, information technology and electronic communications, as well as the development and delivery of our products and cloud services, which includes collecting, handling, processing and/or storage of data on our behalf. These internal and external functions involve an array of software and systems (including cloud-based) that enable us to conduct, monitor and/or protect our business, operations, systems and information technology assets. Our cloud-based solutions enable us to host our customers&#8217; subscriber data in third-party data centers. Hackers could steal proprietary or personal information related to our business, products, employees and customers, including information related to customers of our customers; hold data ransom; or otherwise interrupt our systems and services or those of our supply chain partners, vendors, customers or others. There have been increasing instances of cybersecurity attacks and security breaches, including sophisticated supply chain attacks. As we and our third-party providers continue to increase our reliance on virtual environments and communications systems and cloud-based solutions to support our work-from-anywhere culture and overall business needs, our exposures to third-party vulnerabilities and security risks also increase. Despite our on-going enhancement of security precautions, hackers are increasingly more sophisticated and aggressive, and our efforts may be inadequate to prevent all incidents of data breach or theft due, for example, to the increased use by attackers of tools and techniques that are specifically designed to circumvent controls, to avoid detection, and to remove or obfuscate forensic evidence.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">We and certain of our third-party providers have in the past been subject to cyberattacks and security incidents. The theft, loss or misuse of proprietary or personal data collected, stored or processed by us or our service providers to run our business could result in significant security and remediation costs, regulatory fines and penalties, and/or litigation costs. Even if we and our third-party providers allocate, implement and manage reasonable security and data protection measures, we could experience data loss, unauthorized data disclosure or a breach of our systems, products or those of our third-party data centers that materially impact our business. The continued growth of our cloud-based platform and managed services portfolio and increased reliance on third-party development partners and third-party software and cloud-based solutions, increases the likely </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">11</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">risks arising from security breaches or data loss. Any data loss or compromise of our systems that collect and process personal information (including personal information of customers of our customers), or third-party data centers where that personal information is stored, could result in loss of confidence in the security of our offerings and loss of customers or customer goodwill. Such losses also could damage our reputation, lead to liability given the increasing development of strict privacy and data security laws and regulations around the world, and adversely affect our business, financial condition, operating results and cash flows. Although we maintain insurance that may apply to cybersecurity risks and liabilities, there can be no guarantee that any or all costs or losses incurred will be partially or fully insured.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Changing market and customer requirements may adversely affect the valuation of our inventory as well as our supplier purchase commitments.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Customer demand for our products can change rapidly in response to market and technology developments. We may, from time to time, adjust inventory valuations downward or end of life certain of our products in response to our assessment of our business strategy as well as consideration of demand from our customers for specific products or product lines. We also periodically evaluate our supplier purchase commitments, which have increased significantly due to extended lead-times in the current supply-chain environment. We record a liability for excess and obsolete components based on our estimated future demand for our products, potential obsolescence of technology and product life cycles. If we fail to accurately plan our inventory levels, which becomes more challenging as component lead times increase, we may have to write off excess or obsolete inventory, or accrue a liability for component inventory held by our suppliers, both of which could have a material adverse effect on our financial condition and results of operations.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Business and operational risks associated with expanding our international operations could harm our business.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We are subject to business and operational risks associated with our international operations, including our global supply-chain operations and our international offices located in Nanjing, China and Bangalore, India. In addition, we are exposed to risk arising from dependence upon third-party development contractors in India and our growing Bangalore staff, and, to a lesser extent, dependence upon our international sales operations. The risks associated with our international operations also include costs of complying with differing and changing laws and regulatory requirements, tariffs, export quotas, custom duties and other trade restrictions; effects of inflation, currency controls and/or fluctuations in currency exchange rates; limited, inadequate or non-existent IP protection; and uncertainties associated with political conflicts and instabilities, variable economic conditions, terrorist attacks or acts of war. Our development operations and activities in China and India involve these and other significant risks, including: local labor conditions and regulations; knowledge transfer related to our technology and exposure to misappropriation of IP or confidential information, including information that is proprietary to us, our customers and third parties; heightened exposure to changes in the economic, security, political and pandemic conditions; international trade agreements and U.S. tax provisions that could adversely affect our international operations; complexities of managing development timelines and deliverables from abroad; and differences in local business practices and customs that may not align with our expectations and standards.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Along with the foregoing risks, our international sales operations involve risks associated with greater costs and complexity localizing and supporting our products and platform in local markets; evolving privacy regulations, trade regulations, compliance requirements and incremental costs applicable to the qualification, production, sale and delivery of our products; longer collection periods, financial instability and other difficulties impacting collection of accounts receivable in certain jurisdictions; more intense competition including from local equipment suppliers; and our reliance on value added resellers to sell and support our products in international markets given our limited presence and infrastructure outside the U.S. To expand our international operations, we will need to invest resources to attract key talent, build operational infrastructure, execute on our international strategy and drive international market demand for our products. If we invest substantial resources to expand our international operations and are unable to do so successfully and in a timely manner, our financial condition and results of operations may suffer.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">12</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">If we do not successfully execute our business strategy to increase our sales to new and existing BSPs, our operating results, financial condition, cash flows and long-term growth may be negatively impacted.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our growth depends upon our ability to increase sales to existing and new service providers of all types and sizes, and the execution of our strategy to increase sales to BSPs involves significant risk. The majority of our revenue is not recurring, and our customers generally have no committed purchase requirements, may cancel orders or cease purchasing our products at any time. If our customers stop purchasing our products for any reason, our business and results of operations would be harmed. If we are unable to increase our sales to new and existing BSPs, our operating results, financial condition, cash flows and long-term growth may be negatively impacted. Our strategy includes investing in regional sales teams and select channel partners to sell to smaller regional BSPs. A large portion of our current sales are to customers with smaller regional networks and limited capital expenditure budgets. The spending patterns of many of these customers are generally less formal than larger service providers and often characterized by small and sporadic purchases, and the potential revenue from any one of these customers is limited. We rely primarily on channel partners, including value added resellers, internationally and for certain U.S. markets. We face fierce competition for business with key channel partners. If we are unable to engage channel partners that we believe are key to our strategy, we may fail to grow our sales as planned. Furthermore, we rely on our channel partners to promote and sell our products. The loss of a key channel partner or the failure of our partners to provide adequate services could have a negative effect on customer satisfaction and could cause harm to our business.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our selling efforts to larger BSPs require substantial investments of technical, marketing and sales resources through lengthy equipment qualification and sales cycles without any assurance of generating sales. We may be required to invest in costly upgrades to meet more stringent performance criteria and interoperability requirements, develop new customer-specific features or adapt our products to meet required standards. We have invested and expect to continue to invest considerable time, effort and expenditures, including investment in product research and development, related to these opportunities without any assurance that our efforts will result in revenue. </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The quality of our support and services offerings is important to sustain and increase our sales to new and existing customers. Our services to customers have increasingly broadened to help them deploy our products within their networks. Once our products are deployed within our customers&#8217; networks, they depend on our support organization to resolve any issues relating to those products. If we do not effectively assist our customers in deploying our products, succeed in helping them quickly resolve post-deployment issues or provide effective support, it could adversely affect our ability to sell our products to existing customers and harm our reputation with potential new customers. As a result, our failure to maintain high quality support and services could result in the loss of customers, which would harm our business.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">If we do not successfully increase our sales through adoption of our new platform and managed service offerings, our operating results, financial condition, cash flows and long-term growth may be negatively impacted.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We have platform and managed service offerings that are new and early in their life cycles and subject to uncertain market demand. If our customers are unwilling to adopt these new offerings, install our new products or deploy our new services, or if we are unable to achieve market acceptance of our products and platform, our business and financial results may be harmed. Moreover, adoption of our cloud product offerings, such as our Revenue EDGE, is dependent upon the success of our customers in investing, marketing, selling and deploying broader services&#8212;including managed services&#8212;to their subscribers, and our ability to differentiate our products from competing or substitutive product and service offerings. For example, our managed services include managed Wi-Fi, network security, parental controls and an ecosystem of services from partners including Arlo, Bark and Servify. However, if subscriber demand for such services does not grow as expected or declines, or our customers are unable or unwilling to invest in our platform to deploy and market these services, demand for our products may not grow at rates as we anticipate.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">We may have difficulty evolving and scaling our business and operations to meet customer and market demand, which could result in lower profitability or cause us to fail to execute on our business strategies.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In order to grow our business, we will need to continually evolve and scale our business and operations to meet customer and market demand. Evolving and scaling our business and operations places increased demands on our management as well as our financial and operational resources to effectively manage organizational change; design scalable processes; accelerate and/or refocus research and development activities; expand our manufacturing, supply chain and distribution capacity; increase our sales and marketing efforts; broaden our customer-support and services capabilities; maintain or increase operational efficiencies; scale support operations in a cost-effective manner; implement appropriate operational and financial systems; and maintain effective financial disclosure controls and procedures. If we cannot evolve and scale our business and operations effectively, we may not be able to execute our business strategies in a cost-effective manner and our business, financial condition, profitability and results of operations could be adversely affected.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">13</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our business and results of operations have been, and may continue to be, negatively affected by the on-going effects of the COVID-19 pandemic and related severe impacts on the global economy.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">For over three years, the COVID-19 pandemic has severely impacted the global economy, disrupting financial markets, global manufacturing activities, customer purchasing patterns and general business operations, resulting in business closures, significant unemployment rates and substantial and prolonged government restrictions on business, travel and personal activities. These measures have disrupted our global supply chain activities, including our third-party manufacturers, logistics providers and suppliers, and significantly limited our business travel, customer engagements and normal business activities, all of which heighten our business and operational risks. Although global economic conditions have generally improved with the rollout of COVID-19 vaccines, business activity may not recover as quickly as anticipated, including as a result of inflationary pressures and the responses by central banking authorities to control such inflation, rising interest rates, debt and equity market fluctuations, diminished liquidity and credit availability, increased unemployment rates, decreased investor and consumer confidence, political turmoil and supply-chain challenges. As the effects of the pandemic persist, we may continue to experience a sustained shortage of components and materials, which may have a material negative impact on our ability to supply products to meet customer requirements and could materially adversely affect our business and results of operations. Although demand for our products has been strong in the short-term as subscribers seek more bandwidth and better Wi-Fi at home for work and entertainment, as the pandemic appears to be subsiding, the future of broadband expansion is unclear. For example, BSPs may not invest in our platform or delay infrastructure improvements due to the uncertainty in the global economy. A prolonged disruption to our business and operations and other adverse residual impacts of the COVID-19 pandemic or further future disruptions could have a material adverse effect on our business, results of operations and financial condition.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">With the increased availability of vaccines in the U.S., we reopened our offices in July 2021 for fully-vaccinated employees who choose to work at the office and resumed business travel with safety precautions. We continue to monitor evolving pandemic conditions and focus on the safety, well-being and productivity of our workforce. The rapid emergence and subsidence of multiple COVID-19 variants and sub-variants suggest that effects of current and potential future COVID-19 variants on our business will continue to make planning responses to new outbreaks an on-going challenge. There are no assurances that the global economy will recover from the on-going effects of the pandemic quickly or at all, or that impacted areas will be able to adequately contain COVID-19 infections.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">We could become subject to litigation that could harm our business or negatively impact our results of operations.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In the ordinary course of business, we are subject to legal claims and litigation, and may become involved in regulatory proceedings, related to disputes over commercial, competition, IP, labor and employment and other matters. Regardless of the merits of any such claims, litigation and regulatory proceedings are inherently uncertain, and can be costly, disruptive to our business and operations, harmful to our reputation, and distracting to management. In particular, as a technology company, we may be subject to IP claims asserting patent, copyright, trademark and/or other infringement claims that are costly to defend and could limit our ability to use some technologies in the future. The risk of such claims is heightened as we expand our products and services and increasingly rely on more technologies, including third-party IP rights that we license and incorporate into our products and services. Third parties from whom we license IP may be unable or unwilling to indemnify us for such claims or offer any other remedy to us. Increasingly, patent infringement claims are asserted by patent assertion entities and non-practicing entities, or NPEs, that do not conduct business as an operating company and hold and own patents only for the purpose of aggressively pursuing royalties through infringement assertions or patent infringement litigation. Further, in our industry, the number of assertions by NPEs continues to increase due in part to patent sales by operating companies to NPEs and availability of litigation financing. We have received and expect to continue to receive assertions from NPEs and other third parties alleging that we may be infringing their patents or other IP rights; offering licenses to such IP; and/or threatening litigation. If our products are found to infringe, these claims could also result in the suspension of our ability to import, market and sell our products and services, product shipment delays or requirements to modify our products or enter into costly settlements or licensing agreements. Such royalty or licensing agreements, if required, may not be available to us on acceptable terms, if at all. Furthermore, we may additionally be financially responsible for claims made against our customers, including costs of litigation and damages awarded, under indemnity obligations which could further negatively impact our results of operations. Protracted litigation could cause us to incur significant defense costs, which would negatively impact our results of operations.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">We have a history of fluctuations in our gross margin and operating results, which can make it difficult to predict our future performance and could cause the market price of our stock to decline.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We have a history of fluctuations in our quarterly and annual gross margin and operating results, including fluctuations due to factors outside of our control. Factors that impact variability of our operating results include our ability to predict our revenue and reduce and control our costs, our ability to predict product functions and features desired by our customers, the impact of global economic conditions, our ability to effectively manage our global supply chain operations, our ability to effectively manage third parties upon whom we depend to conduct our business, our customers&#8217; spending patterns and purchasing </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">14</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">decisions, the impact of competition, customer adoption of our products, our ability to manage our legal, contractual and regulatory obligations and liabilities, and other risk factors identified in the lead-in to &#8220;Management&#8217;s Discussion and Analysis of Financial Condition and Results of Operations&#8221; above and in this &#8220;Risk Factors&#8221; section. Our gross margin is further impacted by customer, geographic and product mix, the impact of competition on our prices, our ability to manage our costs associated with components and materials, excess and obsolescence, expedite fees and logistics-related activities, contractual commitments and other product costs. Fluctuating results make it difficult to predict our future performance and could cause the market price of our stock to decline. We expect to continue to incur significant expenses and cash outlays as we expand our business and operations and target new customer opportunities. Given our anticipated growth and the intense competitive pressures we face, we may be unable to adequately control our operating expenses or maintain positive operating income. Comparing our operating results on a period-to-period basis may not be meaningful, and you should not rely on our past results as an indication of our future performance. If our revenue or operating results fall below the expectations of investors or securities analysts, or below any guidance we may provide to the market, the market price of our stock would likely decline.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">We are exposed to customer credit risks that could adversely affect our operating results and financial condition.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We generally extend credit terms for sales to our customers which exposes us to credit risk. If we are unable to collect our accounts receivable balances as anticipated, our operating results and financial condition will be harmed. A number of factors contribute to this risk, including our ability to adequately assess a customer&#8217;s creditworthiness and financial condition, changes in a customer&#8217;s financial condition and/or liquidity, our ability to timely collect our accounts receivable from customers, disagreements with customers on invoiced balances and economic downturns or other unanticipated events impacting a customer&#8217;s ability to pay. Furthermore, some of our international customers operate in countries with developing economies, volatile financial markets or currency regulations that impact their ability to make payments in U.S. dollars. While we take measures to pursue collections on our accounts receivable, we have from time to time written down accounts receivable and written off doubtful accounts and may need to do so in future periods. The determination of allowances for doubtful accounts involves significant judgment, and if we underestimate our allowance for doubtful accounts, we will have to make further write-downs. Such write-downs or write-offs could negatively affect our operating results for the period in which they occur and could harm our cash flow or our financial condition.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">If we lose any of our key personnel, or are unable to attract, train and retain qualified personnel, our ability to manage our business and continue our growth would be negatively impacted.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our success depends, in large part, on the continued contributions of our key personnel who are highly skilled and would be difficult to replace. Competition for skilled personnel, particularly in software and cloud development and engineering, is intense. We cannot be certain that we will be successful in attracting and retaining qualified personnel, or that newly hired personnel will function effectively, both individually and as a group. If we are unable to effectively recruit, hire and utilize new employees to align with our company objectives, execution of our business strategy and our ability to react to changing market conditions may be impeded, and our business, financial condition and results of operations may suffer. We have operated using a &#8220;work-from-anywhere&#8221; model since the first half of 2020, and if we do not continue to effectively manage our distributed workforce, we could face challenges maintaining our corporate culture, which could increase attrition or limit our ability to attract personnel. None of our key personnel are bound by a written employment contract to remain with us for a specified period. In addition, we do not currently maintain key person life insurance covering our key personnel. If we lose the services of any key personnel, our business, financial condition and results of operations may suffer.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">If we experience disruptions with our enterprise resource planning system, we may not be able to effectively transact business or produce financial statements, which would adversely affect our business, results of operations and cash flows.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In January 2020, we migrated our Oracle enterprise resource planning, or ERP, system to Oracle&#8217;s cloud platform. In 2022, we implemented a software billing application on Salesforce.com. With these implementations, we are highly dependent upon Oracle and Saleforce.com to host, manage and maintain our ERP system and supporting applications. Any disruptions to their business or processes, or delays in their ability to provide services to us, may in turn disrupt our business operations or increase costs. Furthermore, we receive quarterly system updates and enhancements on the cloud platform according to Oracle&#8217;s release timeline and change management processes, which if not managed properly may disrupt our business operations and delay our ability to process transactions and produce reports necessary to conduct our business. We are highly dependent upon our ERP system for critical business functions, including order processing and management, supply chain and procurement operations, financial planning, accounting and reporting; accordingly, protracted disruption in functionality or processing capabilities of the ERP system could materially impair our ability to process transactions timely or produce accurate financial statements on a timely basis. If our systems suffer prolonged interruption, our results of operations and cash flows would be adversely affected.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">15</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">As a public company we are subject to significant accounting, legal and regulatory requirements; our failure to comply with these requirements may adversely affect our operating results and financial condition.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We are subject to significant accounting, legal and regulatory requirements, including requirements and rules under the Sarbanes-Oxley Act, or SOX, and the Dodd-Frank Wall Street Reform and Consumer Protection Act, or Dodd-Frank, among other rules and regulations implemented by the SEC, as well as listing requirements of the New York Stock Exchange, or NYSE. We incur significant accounting, legal and other expenses and must invest substantial time and resources to comply with public company reporting and compliance requirements, including costs to ensure we have adequate internal controls over accounting and financial reporting, proper documentation and testing procedures among other requirements. We cannot be certain that the actions we have taken to implement internal controls over financial reporting will be sufficient. We have in the past discovered, and may in the future discover, areas of our internal financial and accounting controls and procedures that need improvement, particularly as we enhance, automate and improve functionality of our processes and internal applications. New laws and regulations as well as changes to existing laws and regulations affecting public companies, including the provisions of SOX and Dodd-Frank and rules adopted by the SEC and the NYSE, would likely result in increased costs to us as we respond to their requirements. We continue to invest resources to comply with evolving laws and regulations, and this investment may result in increased general and administrative expense.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">If we fail to maintain proper and effective internal controls, our ability to produce accurate financial statements on a timely basis could be impaired, which would adversely affect our operating results and our stock price.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our management is responsible for establishing and maintaining adequate internal control over financial reporting to provide reasonable assurance regarding the reliability of our financial reporting and the preparation of financial statements in accordance with U.S. generally accepted accounting principles. Our management does not expect that our internal control over financial reporting will prevent or detect all error and all fraud. A control system, no matter how well designed and operated, can provide only reasonable, not absolute, assurance that the control system&#8217;s objectives will be met. Because of the inherent limitations in all control systems, no evaluation of controls can provide absolute assurance that misstatements due to error or fraud will not occur or that all control issues and instances of fraud, if any, within our company will have been detected. If we are unable to produce accurate financial statements on a timely basis, investors could lose confidence in the reliability of our financial statements, which could cause the market price of our common stock to decline and make it more difficult for us to finance our operations and growth.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Risks Related to Our Products</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our products are highly technical and may contain undetected hardware or software defects or software bugs, which could harm our reputation and adversely affect our business.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our products, including our platform (cloud, software and systems) and managed services, are highly technical and, when deployed, are critical to the operation of many networks. Our products have contained and may contain undetected defects, bugs or security vulnerabilities, which risks may be exacerbated as we continue to expand our cloud and software portfolio and include services from third-party partners. Some defects in our products may only be discovered after a product has been installed and used by customers and may in some cases only be detected under certain circumstances or after extended use. Any errors, bugs, defects or security vulnerabilities discovered in our products after commercial release could result in loss of revenue or delay in revenue recognition, loss of customers and increased service and warranty and retrofit costs, any of which could adversely affect our business, operating results and financial condition. In addition, we could face claims for security and data breach, product liability, tort or breach of warranty. Our contracts with customers contain provisions relating to warranty disclaimers and liability limitations, which may not be upheld. Defending a lawsuit, regardless of its merit, is costly and may divert management&#8217;s attention and adversely affect the market&#8217;s perception of us and our products. In addition, if our business liability insurance coverage proves inadequate or future coverage is unavailable on acceptable terms or at all, our business, operating results and financial condition could be adversely impacted.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">If we are unable to ensure that our products interoperate properly and as required within our customers&#8217; networks, our business will be harmed.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our products must interoperate with our customers&#8217; existing and planned networks, which often have varied and complex specifications, utilize multiple protocol standards, include software applications and customizations and products from multiple vendors and contain multiple generations of products that have been added over time. As a result, we must continually ensure that our products interoperate properly with these existing and planned networks. To meet these requirements, we must undertake development efforts, including test protocols, that require substantial capital investment and employee resources. We may not accomplish these development goals quickly or cost-effectively, if at all. If we fail to maintain interoperability, we may face substantially reduced demand for our products, which would reduce our revenue opportunities and market share. We rely upon interoperability arrangements with equipment and software vendors for the use or integration of their technology with our products. If these relationships fail, we may have to devote substantially more resources to developing alternative products and </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">16</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">processes and our efforts may not be as effective as the combined solutions under our current arrangements. In some cases, these other vendors are either direct competitors or companies that have extensive relationships with our existing and potential customers and influence the purchasing decisions of those customers. Some of our competitors have stronger relationships with some of our interoperability partners, and as a result, our ability to have successful interoperability arrangements with these companies may be harmed, which in turn may harm our ability to successfully sell and market our products.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our estimates regarding warranty or product obligations are highly subjective. If our estimates change, the liability for warranty or product obligations may be increased, impacting future cost of revenue.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our products are highly complex, and our product testing may not be adequate to detect all defects, errors, failures and quality issues. Accordingly, our estimates regarding future warranty or product obligations are highly subjective, and if our estimates change, the liability for warranty or product obligations may be increased, impacting future cost of revenue. Quality or performance problems for products covered under warranty could adversely impact our reputation and negatively affect our operating results and financial position. The development and production of new products with high complexity often involves problems with software, components and manufacturing methods. If significant warranty or other product obligations arise due to reliability or quality issues arising from defects in software, faulty components or improper manufacturing methods, our operating results and financial position could be negatively impacted by cost associated with fixing software or hardware defects; high service and warranty expenses; high inventory obsolescence expense; delays in collecting accounts receivable; payment of liquidated damages for performance failures; and loss of customer goodwill and future sales.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our business and operations depend on proprietary technologies, and our financial performance may suffer if we cannot protect and enforce our IP rights.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our success and ability to compete depend on proprietary technology. We rely significantly upon patent, copyright, trademark, trade secret and other IP laws, IP registration rights and agreements with our employees, customers, partners, suppliers and other parties, to establish and maintain IP rights necessary for our business and operations. U.S. IP laws afford us only limited protection, and the laws of some foreign countries do not protect proprietary rights to the same extent or at all. Our patent applications may not result in issued patents, and our issued patents may not be enforceable. Our IP rights could be challenged, invalidated, infringed or circumvented, any of which could impair or harm our business and operations and be costly to defend. Our failure to adequately protect our IP rights could result in our competitors offering similar products, resulting in the loss of our competitive advantage and decreased sales.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We and our third-party providers may be unable to adequately prevent unauthorized third-party copying or use of our IP. For example, contractual provisions protecting our IP could be breached, or our IP could be reverse engineered or unlawfully distributed. It may become more difficult to adequately protect our IP as we expand our reliance on third parties for the design, development and/or manufacture of our products. In addition, we may become subject to increased risks arising from or related to security breaches, data loss or theft of our data or our IP, and have greater difficulty protecting our IP as our work-from-anywhere workforce and work product become more distributed. Policing the unauthorized use and distribution of our IP is difficult and costly. Litigation, which could result in substantial costs, diversion of resources and harm to our business, may be necessary to enforce our IP rights, protect our trade secrets or determine the validity and scope of proprietary rights.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">If we are unable to obtain third-party technology licenses needed for our products and platform solutions, our business and operations will be impaired, and our operating results could be adversely affected.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We increasingly rely on technology licensed from third parties for our products and platform solutions. We may not be able to secure or maintain necessary technology licenses from these third parties on commercially reasonable terms or at all. Third parties may also choose to not renew licenses with us, demand unreasonable license fees or cease to offer technologies that we require. The inability to obtain necessary third-party licenses or to secure reasonable license terms at a cost acceptable to us could harm the competitiveness of our products and solutions, result in lost revenue and adversely affect our operating results. For example, we may be forced to forego product features or platform offerings, including features and offerings we believe are critical to our strategy, accept substitute technology of lower quality or performance standards or incur higher costs, or the time-to-market of our products or product features could be delayed. Furthermore, our ability to utilize third-party technology may be disrupted by disputes over IP rights, including claims of IP infringement, which could prevent us from offering or selling the products that utilize the disputed technology and adversely affect our operating results. </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our use of open-source software could impose limitations on our ability to commercialize our products.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We incorporate open-source software into our products. The terms of many open-source software licenses have not been interpreted by the courts, and there is a risk that such licenses could be construed in a manner that could impose unanticipated conditions or restrictions on our ability to sell our products. In such event, we could be required to make our proprietary software generally available to third parties, including competitors, at no cost, to seek licenses from third parties in order to continue offering our products, to re-engineer our products or to discontinue the sale of our products in the event re-engineering cannot be accomplished on a timely basis or at all, any of which could adversely affect our revenue and operating expenses.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">17</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Macroeconomic and Industry Risks</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Adverse global economic, market and industry conditions, geopolitical issues and other conditions that impact our increasingly global operations could have a negative effect on our business, results of operations and financial condition and liquidity.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As a global company, our performance is affected by global economic, market and industry conditions (including the current inflationary economic environment and rising interest rates) as well as geopolitical issues and other conditions with global reach. In recent years, concerns about the global economic outlook have adversely affected market and business conditions in general. Macroeconomic weakness and uncertainty make it more difficult for us to manage our operations and accurately forecast revenue, gross margin and operating expenses. Geopolitical issues, such as the Russian invasion of Ukraine, relations between the United States and China, tariff and trade policy changes, and increasing potential of conflict involving countries in Asia that are critical to our supply-chain operations, such as Taiwan and China, have resulted in increasing global tensions and create uncertainty for global commerce. The on-going global impact of the COVID-19 pandemic continues to create shortages in component and supplies and otherwise disrupt and delay our global supply-chain operations. In addition, rising inflation in the United States has affected businesses across many industries, including ours, by increasing the costs of labor, employee healthcare, components and freight and shipping, which may further constrain our customers&#8217; or prospective customers&#8217; budgets. To the extent there is a sustained general economic downturn, and our platform and services are perceived by customers or potential customers as costly, or too difficult to deploy or migrate to, our revenue may be disproportionately affected by delays or reductions in spending. Sustained or worsening of global economic conditions and geopolitical issues may increase our cost of doing business, materially disrupt our supply chain operations, cause our customers to reduce or delay spending and intensify pricing pressures. We cannot predict the timing, strength or duration of any economic slowdown, instability or recovery, generally or within any particular industry. If the economic conditions of the general economy or markets in which we operate worsen from present levels, demand for our products, and our business, financial condition and results of operations, could be adversely affected.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">We face intense competition that could reduce our revenue and adversely affect our financial results.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The market for our products is highly competitive, and we expect competition from both established and new companies to increase. Our ability to compete successfully depends on a number of factors, including our ability to successfully develop new products and solutions that anticipate BSP and market requirements and changes in technology and industry standards; BSP acceptance and adoption of our products and solutions; our ability to differentiate our products from our competitors&#8217; offerings based on performance, features, cost-effectiveness or other factors; our product capabilities to meet customer network requirements and preferences; and our success in marketing and selling our products and platform solutions. </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Many of our current or potential competitors have longer operating histories, greater name recognition, broader product lines, larger customer bases and significantly greater financial, technical, sales, marketing and other resources than we do and are better positioned to acquire and offer complementary products and services. As the broadband access equipment market has undergone and continues to undergo consolidation, our competitors have merged, grown and been able to offer more comprehensive solutions than they individually had offered. Potential customers may also prefer to purchase from their existing suppliers rather than a new supplier, regardless of product performance or features, because the products that we and our competitors offer require a substantial investment of time and funds to qualify and install. The demand on network capacity due to the shift towards a remote workforce may attract new market entrants with competitive or substitutive products, which may lead to increased sales cycles, cause pricing pressure and impact adoption of our platform due to the broader availability of product offerings. Some of our competitors may offer substantial discounts or rebates to win or retain customers. If we are forced to reduce prices to retain existing customers or win new customers, we may be unable to sustain gross margin at desired levels or profitability. Competitive pressures could result in increased pricing pressure, reduced profit margin, increased sales and marketing expenses and failure to increase, or the loss of, market share, any of which could reduce our revenue and adversely affect our financial results.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our industry is characterized by rapid technological advance, and if we fail to develop new products or enhancements that meet changing BSP requirements, we could experience lower sales.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our industry is characterized by rapid technological change, changing needs of BSPs, evolving industry standards and frequent introductions of new products and platform offerings. We invest significant amounts to pursue innovative technologies that we believe will be adopted by BSPs. For example, we have invested and continue to invest resources in our platform offerings. In addition, on an ongoing basis, we expect to reposition our product and service offerings and introduce new offerings as we encounter rapidly changing BSP requirements and increasing competitive pressures. If we cannot increase sales of our new platform and services, keep pace with rapid technological developments to meet customer needs and compete with evolving standards or if the technologies we choose to invest in fail to meet customer needs or are not adopted by customers in the timeframes that we expect, our financial condition and results of operations would be adversely affected.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">18</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Developing our products is complex and involves uncertainties, including pricing risks for key materials, component shortages and limited suppliers. We may experience design, manufacturing, software development quality, support, marketing and other difficulties that could delay or prevent the development, introduction or marketing of new products and enhancements. If we fail to meet our development targets, demand for our products will decline. If we are unable to anticipate and develop new products or enhancements to our existing products on a timely and cost-effective basis, our products may become technologically obsolete more rapidly than anticipated over time, resulting in lower sales which would harm our business. Furthermore, the introduction of new or enhanced products also requires that we manage the transition from older products in accordance with customer requirements. If we fail to maintain compatibility requirements in our customers&#8217; networks, demand for our products would decline, which would reduce our revenue opportunities and market share.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We use third-party development partners both for their key skills and to augment our employee developers. Using third-party development partners for our broadband platform and managed services allow us to accelerate development and leverage the third parties&#8217; expertise, but increases our risks due to reduced direct control over the third party&#8217;s work. This product development approach may cause unforeseen issues in product design, as well as challenges arising from integration and support of third-party features in our products. In addition, our revenue based on the third parties&#8217; product development work may take several years to cover our out-of-pocket expenses, if ever.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our sales cycles can be long and unpredictable, and our sales efforts require considerable time and expense. As a result, our sales are difficult to predict and may vary substantially, which may cause our operating results to fluctuate significantly.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The timing of our revenue is difficult to predict. Our sales efforts often involve educating BSPs about the use and benefits of our platform (cloud, software and systems) and managed services. BSPs typically undertake a significant evaluation process, which frequently involves not only our platform and managed services, but also those of our competitors and results in a lengthy sales cycle. Sales cycles for larger customers are relatively longer and require considerably more time and expense. We spend substantial time, effort and money in our sales efforts without any assurance that our efforts will produce sales. In addition, product purchases are frequently subject to budget constraints, multiple approvals and unplanned administrative, processing and other delays. The timing of revenue related to sales of products and services that have installation requirements may be difficult to predict due to interdependencies that may be beyond our control, such as BSP testing and turn-up protocols or other vendors&#8217; products, services or installations of equipment upon which our products and services rely. Such delays may result in fluctuations in our quarterly revenue. If sales expected from a specific customer for a particular quarter are not realized in that quarter or at all, we may not achieve our revenue forecasts, and our financial results would be adversely affected.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our business depends upon the capital spending patterns and decisions of BSPs, and any decrease or delay in capital spending by BSPs due to the timing and availability of capital and other causes would reduce our revenue and harm our business.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Demand for our products depends on the magnitude and timing of capital spending by BSPs as they construct, expand, upgrade and maintain their access networks as well as BSPs&#8217; adoption of our platform and managed services. Capital spending is cyclical in our industry, sporadic among individual BSPs and can change on short notice, which gives us little visibility into changes in spending behavior in any particular quarter. Capital spending for network infrastructure projects could be delayed or canceled in response to factors outside our control, such as reduced consumer spending, challenging capital markets or declining liquidity trends. BSP spending is also affected by reductions in budgets, including as a result of a general economic downturn, delays in purchasing cycles, access to government funding programs or capital markets, and seasonality and delays in capital allocation decisions. Historically, our customers may spend less or have less deployments in the first quarter due to pending annual budgets or, in certain regions, due to weather conditions that inhibit outside fiber deployment, resulting in weaker demand for our products in the first quarter. Softness in demand in any of our customer markets, including due to macro-economic conditions beyond our control or uncertainties associated with regulatory reforms, has in the past and could in the future lead to unexpected decline or slowdown in customer capital expenditure. Further, BSPs may pursue capital investment in network technologies other than those offered by us or may choose not to adopt our products and platform solutions in their networks. Reductions in capital expenditures by BSPs would have a material negative impact on our revenue and results of operations and slow our rate of revenue growth. As a consequence, our results for a particular period may be difficult to predict, and our prior results are not necessarily indicative of results in future periods.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Historically, our customer base has been concentrated, and the loss of any of our key customers may adversely impact our revenue and results of operations, and any delays in payment by a key customer could negatively impact our cash flows and working capital.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Historically, a large portion of our sales has been, and in the future may be, to a limited number of large customers. Changes in the BSP market, such as financial difficulties, spending cuts or corporate consolidations that impact purchasing decisions by these customers have and may again negatively impact our revenue, and as a result, revenue from such customers may remain flat or continue to decline. For example, sales to Lumen, our only greater than 10% customer in 2020, declined in 2021 and sales to other BSP customers increased such that Lumen was not a 10% customer in 2021 or 2022. Any decrease or delay in </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">19</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">purchases of any of our key customers, particularly if prolonged or sustained, or our inability to grow our sales with them, may have a material negative impact on our revenue and results of operations.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In addition, some larger customers may demand discounts and rebates or desire to purchase their access systems and software from multiple providers. As a result of these factors, our future revenue opportunities may be limited, and we may face pricing pressures, which in turn could adversely impact our gross margin and our profitability. The loss of, reduction in, or pricing discounts associated with orders from any larger customer could significantly reduce our revenue and harm our business. Furthermore, delays in payment and/or extended payment terms from any of our larger customers could have a material negative impact on our cash flows and working capital to support our business operations.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Government-sponsored programs and U.S. federal government shutdowns could impact the timing and buying patterns of BSPs, which may cause fluctuations in our operating results.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We sell to BSPs, including U.S.-based IOCs, which rely significantly upon interstate and intrastate access charges and federal and state subsidies in the form of grants and other funding such as the Federal Communications Commission&#8217;s, or FCC&#8217;s, Rural Digital Opportunity Fund, the CARES Act or the American Rescue Plan Act. The FCC and some states may change such payments and subsidies, which could reduce IOC revenue. Furthermore, many IOCs use or expect to use government-supported loan programs or grants, such as Rural Utility Service loans and grants, to finance capital spending. These government-supported loan programs and grants generally include conditions such as deployment criteria, domestic preference provisions and other requirements that apply to the project and selected equipment as conditions for funding. For example, the U.S. government recently introduced legislation imposing domestic content requirements for infrastructure programs that receive federal funding. Changes to the terms or administration of these programs, including uncertainty from government and administrative change, increasing focus on domestic requirements by the U.S. that may require re-assessment of compliance, potential funding limitations that impact our ability to meet program requirements or delays due to U.S. federal government shutdowns could reduce the ability of IOCs to access capital or secure funding these programs to purchase our products and services and thus reduce our revenue opportunities. Customers may curtail purchases if they receive less funding than planned, are negatively impacted by federal government shutdowns or changes in government regulations and subsidies, or as funding winds down, any of which could have an adverse effect on our operating results and financial condition.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Government and Regulatory Risks</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Increasing data privacy regulations could impact our business and expose us to increased liability.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Government authorities in the United States and around the world have implemented and are continuing to implement broader and more stringent laws and regulations concerning data protection. The interpretation and application of these data protection laws and regulations are often uncertain and changing, and it is possible that they may be interpreted and applied in a manner that is inconsistent with our data practices. For example, the General Data Protection Regulation, or EU GDPR, adopted by the European Union, or EU, and the UK General Data Protection Regulation, or UK GDPR, adopted by the United Kingdom, or UK, (the EU GDPR and UK GDPR hereinafter referred to as the GDPR) and national data protection supplementing laws in these jurisdictions impose specific duties and requirements upon companies that collect, process or control personal data of individuals located in the EU/UK, including a principle of accountability and the obligation to demonstrate compliance through policies, procedures, training and audit. Although we currently do not have material operations or business in the EU or the UK, we are in the process of expanding in these jurisdictions, and we have incurred and will continue to incur substantial costs in this respect. Furthermore, the GDPR imposes significant penalties for noncompliance of at least &#8364;20 million (for the EU GDPR) or &#163;17.5 million (for the UK GDPR), or up to 4% of a company&#8217;s worldwide revenue; thus, any non-compliance with the GDPR could result in a material adverse effect on our business, financial condition and results of operations. Twice, the Court of Justice of the European Union, or the CJEU, has invalidated regulations designed to facilitate the transfer of data from European countries to the United States, and in July 2020, the CJEU held that transfers must be assessed on a case-by-case basis and reliance on standard contractual clauses (a standard form of contract approved by the European Commission as an adequate mechanism for personal data transfers) may not be sufficient in all circumstances. In March 2022, the U.S. and EU announced a new regulatory regime intended to replace the invalidated regulations; however, this new EU-US Data Privacy Framework has not yet been implemented beyond an executive order signed by President Biden on October 7, 2022 on Enhancing Safeguards for United States Signals Intelligence Activities. We currently rely on the standard contractual clauses and the UK International Data Transfer Agreement (or Addendum) to transfer personal data outside the European Economic Area and the UK respectively, including to the United States. As the enforcement landscape further develops, and supervisory authorities issue further guidance on &#8211; and revised standard contractual clauses for &#8211; international data transfers. Our current contracts may not be sufficient, and we could suffer additional costs, complaints and/or regulatory investigations or fines; we may have to stop using certain tools and vendors and make other operational changes; we have had to and will have to implement revised standard contractual clauses for existing intragroup, customer and vendor arrangements within required time frames; our customers may not use our services in a manner that is compliant with applicable data privacy laws and regulations; </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">20</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">our services may not be competitive in certain markets; and/or it could otherwise affect the manner in which we provide our services, and could adversely affect our business, operations and financial condition.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We and/or our customers are also subject to evolving EU and UK privacy laws on cookies, tracking technologies, e-marketing and electronic communications. Recent European court and regulator decisions are driving increased attention to cookies and tracking technologies. If the trend of increasing enforcement by regulators of the strict approach to opt-in consent for all but essential use cases, as seen in recent guidance and decisions continues, this could lead to substantial costs, require significant systems changes, limit the effectiveness of marketing activities conducted on behalf of our customers, divert the attention of our technology personnel, adversely affect our margins, and subject us to additional liabilities. In addition, new security regulations, such as the EU&#8217;s Network and Information Security 2 Directive (NIS2) and the UK&#8217;s Telecommunications (Security) Act 2021 together with its implementing regulations (currently in draft form) imposes further security obligations on electronic communications networks. We may be required to implement (and contractually commit to) additional security measures to remain a competitive vendor, as customers will need to ensure its vendors are able to meet the obligations that they are themselves subject to, or customers may choose different vendors due to our security measures. This could result in additional costs and require operational changes which could adversely affect our business, operations and financial condition.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In light of the complex and evolving nature of EU, EU Member State and UK privacy laws, there can be no assurances that we will be successful in our efforts to comply with such laws; violations of such laws could result in regulatory investigations, fines, orders to cease/change our use of technologies, as well as lead to civil claims including class actions, and reputational damage.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Since 2020, a number of U.S. states, including California, Colorado, Utah and Virginia, have enacted laws and regulations to protect consumers&#8217; personal information, and efforts to enact a comprehensive federal privacy law have intensified. Most of the new or proposed laws include restrictions on processing consumer information for targeted advertising, which could negatively affect our marketing cloud product. Complying with new and changing laws could cause us to incur substantial costs in order to market and sell our cloud-based solutions in the U.S. and internationally, deter customers from adopting our cloud-based solutions or require us to redesign our platform in order to meet customer requirements related to such laws. Regulatory actions or claims involving our practices in the collection, storage, processing, use or disclosure of consumer information or other personal data, even if unfounded, could damage our reputation and adversely affect our operating results. The failure or perceived failure to comply may result in government or civil proceedings or actions against us, or could cause us to lose customers, which could have an adverse effect on our business.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">If we fail to comply with evolving industry standards, sales of our products would be adversely affected.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our products are subject to a significant number of domestic and international standards, which evolve as new technologies are developed and deployed. As we expand into new global markets, we are likely to encounter additional standards. Our products must comply with these standards in order to be widely marketable. In some cases, we are required to obtain certifications or authorizations before our products can be introduced, marketed or sold in new markets or to new customers. For example, our ability to maintain Operations System Modification for Intelligent Network Elements certification for our products will affect our ongoing ability to continue to sell our products to large BSPs. In addition, our ability to expand our international operations may be limited by standards in countries or may require us to redesign our products or develop new products to meet local standards. We may not be able to design our products to comply with local requirements, which would impede or prevent our ability to grow our business in those locations. Moreover, as we expand our business and operations globally, we must increase investments to maintain compliance with evolving standards across all of our markets. The costs of complying with evolving standards or failure to obtain timely authorizations or certification could prevent us from selling our products where these standards or regulations apply, which would result in lower revenue and lost market share.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our failure or the failure of our manufacturers to comply with environmental and other legal regulations could adversely impact our results of operations.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The manufacture, assembly and testing of our products may require the use and disposal of hazardous materials that are subject to environmental, health and safety regulations, or materials subject to laws restricting the use of conflict minerals. We substantially depend upon our third-party manufacturers to comply with these requirements. Any failure by us or our third-party manufacturers to comply with these requirements could result in regulatory penalties, legal claims or disruption of production of our products. In addition, any failure to properly manage the use, transportation, emission, discharge, storage, recycling or disposal of hazardous materials could subject us to increased costs or liabilities. Existing and future environmental regulations and other legal requirements may restrict our use of certain materials to manufacture, assemble and test products. Any of these consequences could adversely impact our results of operations by increasing our expenses and/or requiring us to alter our manufacturing processes.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">21</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">We are subject to governmental export and import controls that could subject us to liability or impair our ability to compete in additional international markets.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our products are subject to U.S. export and trade controls and restrictions. International shipments of certain of our products may require export licenses or are subject to additional export requirements. In addition, the import laws of other countries may limit our ability to distribute our products, or our customers&#8217; ability to buy and use our products, in those countries. Changes in our products or changes in export and import regulations or duties may create delays in the introduction of our products in international markets, prevent our customers with international operations from deploying our products or, in some cases, prevent the export or import of our products to certain countries altogether. Any change in export or import regulations, duties or related legislation, shift in approach to the enforcement or scope of existing regulations, or change in the countries, persons or technologies targeted by such regulations, could negatively impact our ability to sell, profitably or at all, our products to existing or potential international customers.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Regulatory and physical impacts of climate change and other natural events may affect our customers and our manufacturers, resulting in adverse effects on our operating results.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As emissions of greenhouse gases continue to alter the composition of the atmosphere, affecting large-scale weather patterns and the global climate, any new regulation of greenhouse gas emissions may result in additional costs to our customers and our manufacturers. In addition, the physical impacts of climate change and other natural events, including changes in weather patterns, drought, rising ocean and temperature levels, earthquakes and tsunamis may impact our customers, suppliers and manufacturers, and our operations. These potential physical effects may adversely affect our revenue, costs, production and delivery schedules, and cause harm to our results of operations and financial condition.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our customers are subject to government regulation, and changes in current or future laws or regulations that negatively impact our customers could harm our business.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The FCC has jurisdiction over our U.S. customers, and FCC regulatory policies that create disincentives for investment in access network infrastructure or impact the competitive environment in which our customers operate may harm our business. For example, adoption of regulations that affect providers of broadband Internet access services could impede the penetration of our customers into certain markets or affect the prices they may charge in such markets. Similarly, changes to regulatory tariff requirements or other regulations relating to pricing or terms of carriage on communication networks could slow the development or expansion of network infrastructures, which could adversely affect the sale of our products and services. Many of our customers are subject to FCC rate regulation of interstate telecommunications services and are recipients of government stimulus payments. Limits or restrictions on access to these programs could affect the ability of IOCs to access capital, which would in turn reduce our revenue opportunities. In addition, many of our customers are subject to state and federal regulation of their businesses, including rates for such services, and may also receive funding from state universal service funds. Changes in state or federal rate regulations or universal service funding rules could adversely affect our customers&#8217; revenue and capital spending plans. Moreover, various international regulatory bodies have jurisdiction over certain of our customers outside the U.S. Changes in any of these standards, laws and regulations, or judgments in favor of plaintiffs in lawsuits against BSPs based on changed standards, laws and regulations could adversely affect the development of broadband networks and services. This, in turn, could directly or indirectly adversely impact the communications industry in which our customers operate.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Risks Related to Ownership of Our Common Stock and Other Risks</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our stock price may continue to be volatile, and the value of an investment in our common stock may decline.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The trading price of our common stock has been, and is likely to continue to be, volatile, which means that it could decline substantially within a short period of time and could fluctuate widely in response to various factors, some of which are beyond our control. These factors include those discussed above and others such as quarterly variations in our results of operations or those of our competitors; failure to meet any guidance that we have previously provided regarding our anticipated results; changes in earnings estimates or recommendations by securities analysts; failure to meet securities analysts&#8217; estimates; announcements by us or our competitors of new products, significant contracts, commercial relationships, acquisitions or capital commitments; developments with respect to IP rights; our ability to develop and market new and enhanced products on a timely basis; our commencement of, or involvement in, litigation and developments relating to such litigation; changes in governmental regulations; and a slowdown in the communications industry or the general economy.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Recently, the stock market in general, and the market for technology companies in particular, has experienced extreme price and volume fluctuations that have often been unrelated or disproportionate to the operating performance of those companies. Broad market and industry factors may seriously affect the market price and volatility of our common stock, regardless of our actual operating performance. Historically, following periods of volatility in the market price of a company&#8217;s securities, there is increased risk that stockholders may initiate securities class action litigation against the company. Such litigation, if instituted against us, could result in substantial costs and a diversion of our management&#8217;s attention and resources.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">22</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Provisions in our charter documents and under Delaware law could discourage a takeover that stockholders may consider favorable and may lead to entrenchment of our management and Board of Directors.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our amended and restated certificate of incorporation and amended and restated bylaws contain provisions that could have the effect of delaying or preventing changes in control or changes in our management or our Board of Directors. These provisions include: (1) a classified Board of Directors with three-year staggered terms, which may delay the ability of stockholders to change the membership of a majority of our Board of Directors; (2) no cumulative voting in the election of directors, which limits the ability of minority stockholders to elect director candidates; (3) the exclusive right of our Board of Directors to elect a director to fill a vacancy created by the expansion of the Board of Directors or the resignation, death or removal of a director, which prevents stockholders from being able to fill vacancies on our Board of Directors; (4) the ability of our Board of Directors to issue shares of preferred stock and to determine the price and other terms of those shares, including preferences and voting rights, without stockholder approval, which could be used to significantly dilute the ownership of a hostile acquirer; (5) a prohibition on stockholder action by written consent, which forces stockholder action to be taken at an annual or special meeting of our stockholders; (6) the requirement that a special meeting of stockholders may be called only by the chairman of the Board of Directors, the chief executive officer or the Board of Directors, which may delay the ability of our stockholders to force consideration of a proposal or to take action, including the removal of directors; and (7) advance notice procedures that stockholders must comply with in order to nominate candidates to our Board of Directors or to propose matters to be acted upon at a stockholders&#8217; meeting, which may discourage or deter a potential acquirer from conducting a solicitation of proxies to elect the acquirer&#8217;s own slate of directors or otherwise attempting to obtain control of us. We are also subject to certain anti-takeover provisions under Delaware law, which prohibits a corporation, in general, from engaging in a business combination with any holder of 15% or more of its capital stock unless the holder has held the stock for three years or, among other things, the Board of Directors has approved the transaction.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">We may need additional capital in the future to finance our business.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">While our working capital needs to support our business operations and growth have been funded from operating cash flows in the near term, we may need additional capital if our current plans and assumptions change. In January 2022, we terminated our loan and security agreement with Bank of America, N.A. If our financial position deteriorates, we may not be able to secure a similar source of financing to support our working capital needs on acceptable terms or at all. If future financings involve the issuance of equity securities, our then-existing stockholders would suffer dilution. If we raise additional debt financing, we may be subject to restrictive covenants that limit our ability to conduct our business. If we are unable to sustain positive operating income and cash flows from operations, our liquidity, results of operations and financial condition may be adversely affected. Furthermore, if we are unable to generate sufficient cash flows to support our operational needs, we may need to cease our repurchase program or seek additional sources of liquidity, including borrowings, to support our working capital needs, even if we believe we have generated sufficient cash flows to support our operational needs. There is no assurance that any other sources of liquidity may be available to us on acceptable terms or at all. If we are unable to generate sufficient cash flows or obtain other sources of liquidity, we will be forced to limit our development activities, reduce our investment in growth initiatives and institute cost-cutting measures, all of which would adversely impact our business and growth.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">We do not currently intend to pay dividends on our common stock and, consequently, our stockholders&#8217; ability to achieve a return on their investment will depend on appreciation in the price of our common stock.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We do not currently intend to pay a cash dividend on our common stock for the foreseeable future. We currently intend to invest our future earnings, if any, to fund our growth. Therefore, our stockholders are not likely to receive any dividends on our common stock for the foreseeable future.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our failure to adequately address and resolve risks and uncertainties associated with acquisitions could have a material adverse impact on our financial condition and results of operations.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We may in the future acquire businesses, products or technologies to expand our product offerings and capabilities, customer base and business. We have evaluated and expect to continue to evaluate a wide array of potential strategic transactions. Such investments may involve significant risks and uncertainties, including distraction of management from current operations, unanticipated costs, and legal and regulatory challenges, all of which could have a material adverse impact on our financial condition and results of operations. In addition, the anticipated benefit of any acquisition may never materialize or the process of integrating acquired businesses, products or technologies may create unforeseen operating difficulties and expenditures.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">23</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">We cannot guarantee that our stock repurchase program will be utilized to the full value approved or that it will enhance long-term stockholder value. Repurchases we consummate could increase the volatility of the price of our common stock and could have a negative impact on our available cash balance.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In July 2022, our Board of Directors authorized a one-year stock repurchase program for up to $100 million of our common stock. Under the repurchase program, repurchases can be made from time to time using a variety of methods, which may include open market purchases, privately negotiated transactions or otherwise, all in accordance with the rules of the SEC and other applicable legal requirements. The specific timing, price and size of the purchases will depend on prevailing stock prices, general economic and market conditions, and other considerations consistent with our capital allocation strategy. Stock repurchases could have an impact on our common stock trading prices, increase the volatility of the price of our common stock, or reduce our available cash balance such that we will be required to seek financing to support our operations. The repurchase program does not obligate us to acquire a particular amount of common stock, and the repurchase program may be suspended or discontinued at any time at our discretion, which may result in a decrease in the trading prices of our common stock. Even if our share repurchase program is fully implemented, it may not enhance long-term stockholder value.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_22"></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;1B.&#160;&#160;&#160;&#160;Unresolved Staff Comments</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">None.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_25"></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;2.&#160;&#160;&#160;&#160;Properties</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We currently lease our corporate headquarters in San Jose, California. In addition to our headquarters site, we lease additional office space in the United States, China and India.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We believe that our facilities are in good condition and are generally suitable to meet our needs for the foreseeable future. We believe that prior to expiration of our current office space leases that we can renew or obtain suitable lease space on commercially reasonable terms for our business needs. In addition, we may continue to seek additional space as needed, and we believe this space will be available on commercially reasonable terms. </span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_28"></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 3.&#160;&#160;&#160;&#160;Legal Proceedings</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">From time to time, we are involved in various legal proceedings arising from the normal course of business. We are not currently a party to any legal proceedings that, if determined adversely to us, in our opinion, are currently expected to individually or in the aggregate have a material adverse effect on our business, operating results or financial condition taken as a whole.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_31"></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 4.&#160;&#160;&#160;&#160;Mine Safety Disclosures</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Not applicable.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">24</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_34"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="text-align:center"><span><br/></span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_37"></div><div style="margin-top:18pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">PART II</span></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 5.&#160;&#160;&#160;&#160;Market for Registrant&#8217;s Common Equity, Related Stockholder Matters and Issuer Purchases of Equity Securities</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Comparative Stock Prices</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our common stock has been trading on the New York Stock Exchange, under the trading symbol &#8220;CALX&#8221; since our initial public offering on March&#160;24, 2010. Prior to this time, there was no public market for our common stock.</span></div><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Number of Common Stockholders</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of February&#160;10, 2023, the approximate number of holders of our common stock was 877 (not including beneficial owners of stock held in street name). </span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Dividends </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We have never declared or paid a cash dividend on our common stock, and we do not currently intend to pay any cash dividends on our common stock in the foreseeable future.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Recent Sales of Unregistered Securities</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">None.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Stock Repurchase</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In July 2022, the Company&#8217;s Board of Directors authorized a one-year stock repurchase program for up to $100 million of the Company&#8217;s common stock. There were no repurchases during the year ended December&#160;31, 2022. As of December&#160;31, 2022, $100 million remained available for future stock repurchases under the repurchase program.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Performance Graph</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following graph shows a comparison of the cumulative total stockholder return on our common stock with the cumulative total returns of the NYSE Composite Index, Russell 2000 Index and the S&amp;P 500 Communications Equipment Index. The graph tracks the performance of a $100 investment in our common stock and in each of the indexes during the last five fiscal years ended December&#160;31, 2022. Data for the Russell 2000 Index and S&amp;P 500 Communications Equipment assume reinvestment of dividends. Stockholder returns over the indicated period are based on historical data and should not be considered indicative of future stockholder returns.</span></div><div style="margin-top:6pt"><img src="calx-20221231_g1.jpg" alt="calx-20221231_g1.jpg" style="height:269px;margin-bottom:5pt;vertical-align:text-bottom;width:500px"/></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">This performance graph shall not be deemed &#8220;soliciting material&#8221; or to be &#8220;filed&#8221; with the SEC for purposes of Section&#160;18 of the Securities Exchange Act of 1934, as amended, or otherwise subject to the liabilities under that Section, and shall not be deemed to be incorporated by reference into any filing of Calix, Inc. under the Securities Act of 1933, as amended.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">25</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_40"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 6.&#160;&#160;&#160;&#160;[Reserved]</span></div><div style="margin-top:6pt"><span><br/></span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_43"></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 7.&#160;&#160;&#160;&#160;Management&#8217;s Discussion and Analysis of Financial Condition and Results of Operations</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">The Management&#8217;s Discussion and Analysis of Financial Condition and Results of Operations contains forward-looking statements regarding future events and our future results that are subject to the safe harbors created under the Securities Act of 1933 (the &#8220;Securities Act&#8221;) and the Securities Exchange Act of 1934 (the &#8220;Exchange Act&#8221;). All statements other than statements of historical facts are statements that could be deemed forward-looking statements. These statements are based on current expectations, estimates, forecasts and projections about the industry in which we operate and the beliefs and assumptions of our management. In some cases, forward-looking statements can be identified by the use of words such as &#8220;believe,&#8221; &#8220;could,&#8221;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> &#8220;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">expect,&#8221; &#8220;may,&#8221; &#8220;estimate,&#8221; &#8220;continue,&#8221; &#8220;anticipate,&#8221; &#8220;intend,&#8221;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">&#8220;should,&#8221; &#8220;plan,&#8221;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">&#8220;predict,&#8221; &#8220;will,&#8221; &#8220;would,&#8221; &#8220;project,&#8221; &#8220;potential,&#8221;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">or the negative thereof or other comparable terminology. In addition, any statements that refer to projections of our future financial performance, our anticipated growth and trends in our business and industry and other characterizations of future events or circumstances are forward-looking statements. Readers are cautioned that these forward-looking statements are only predictions and are subject to risks, uncertainties and assumptions that are difficult to predict, including those identified in the Risk Factors discussed in Item 1A, in the discussion below, as well as in other sections of this Annual Report on Form 10-K. Therefore, actual results may differ materially and adversely from those expressed in any forward-looking statements. All forward-looking statements and reasons why results may differ included in this report are made as of the date hereof, and we assume no obligation to update these forward-looking statements or reasons why actual results might differ.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_46"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Overview</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We are the leading global provider of a broadband delivery platform (cloud, software and systems) and managed services that enable service providers of all types and sizes to innovate and transform their businesses. For our customers to successfully transform their businesses into the innovative BSPs of the future, they require actionable data for critical business functions such as network operations, customer support and marketing. However, this data is often trapped in disparate systems or departmental silos. Our Calix platform, which includes Calix Cloud, Revenue EDGE and Intelligent Access EDGE, gathers, analyzes and applies machine learning to deliver real-time insights seamlessly to each key business function. Our customers utilize these data and insights to simplify network operations, marketing and customer support and deliver experiences that excite their subscribers. This enables BSPs to grow their brand through increased subscriber acquisition, loyalty and revenue and to reduce their operating costs, creating value for their businesses and the communities they serve.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We market our Calix platform and managed services to communication service providers globally through our direct sales force as well as select resellers. Our customers range from smaller, regional service providers to some of the world&#8217;s largest service providers. We have enabled approximately 1,900 customers purchasing directly and through partners to deploy passive optical, Active Ethernet and point-to-point Ethernet fiber access networks.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our revenue and potential revenue growth will depend on our ability to develop, market and sell our platform and managed services to strategically aligned customers of all types such as WISPs, fiber overbuilders, cable MSOs, municipalities and electric cooperatives in the United States and internationally. Our growth is also highly dependent on the speed and willingness of customers to adopt the Calix platform and managed services.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue fluctuations result from many factors, including, but not limited to: increases or decreases in customer orders for our products and services, market, financial or other factors that may delay or materially impact customer purchasing decisions, non-availability of products due to supply chain challenges, including component and labor shortages and increasing lead times as well as disruptions as a result of COVID-19 outbreaks, contractual terms with customers that result in delayed revenue recognition and varying budget cycles and seasonal buying patterns of our customers. More specifically, our customers have in the past spent less in the first quarter as they are finalizing their annual budgets, and in certain regions, customers are challenged by winter weather conditions that inhibit fiber deployment in outside infrastructure. Our revenue is also dependent upon our customers&#8217; timing of purchases, capital expenditure plans and decisions to upgrade their networks or adopt new technologies, including adoption of our software and cloud platform solutions, as well as our ability to grow our customer base.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cost of revenue is strongly correlated to revenue and tends to fluctuate due to all of the above factors that may cause revenue fluctuations. Factors that have impacted our cost of revenue, and that we expect will impact cost of revenue in future periods, also include: changes in the mix of products delivered, customer location and regional mix, changes in the cost of our inventory, including higher costs due to materials shortages including components, supply constraints or unfavorable changes in trade policies, investments to support expansion of cloud and customer support offerings as well as our customer success organization, changes in product warranty and incurrence of retrofit costs, amortization of intangibles, asset write-offs, support fees for silicon-related development work for our products, allowances for obligations to our suppliers and inventory write-</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">26</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">downs. Given the ongoing supply-chain disruptions related to component shortages, longer lead times as a result of increased global demand for certain components and disruptions related to the COVID-19 pandemic, we have experienced and are continuing to experience product supply delays and related challenges, and we expect these delays and related challenges to persist in the foreseeable future. Similarly, while on-going challenges in supply-chain logistics have improved to an extent, delivery timelines remain elongated. In addition, we periodically elect to ship by air versus by ocean in order to meet delivery commitments to our customers, which is more costly. Cost of revenue also includes fixed expenses related to our internal operations, which could increase our cost of revenue as a percentage of revenue if our revenue declines.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our gross profit and gross margin fluctuate based on timing of factors such as changes in customer mix and changes in the mix of products demanded and sold (and any related write-downs of existing inventory or accrual for supplier commitments) and have in the past been negatively impacted by increases in mix of revenue from channel sales rather than direct sales or other unfavorable customer or product mix, shipment volumes and any related volume discounts, changes in our product and services costs, pricing decreases or discounts, new product introductions or upgrades to existing products, customer rebates and incentive programs due to competitive pressure or materials shortages, supply constraints, investments to support expansion of cloud and customer support offerings, tariffs or unfavorable changes in trade policies.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our operating expenses fluctuate based on the following factors among others: changes in headcount and personnel costs, which comprise a significant portion of our operating expenses; variable compensation due to fluctuations in shipment volumes or level of achievement against performance targets; timing of research and development expenses, including investments in innovative solutions and new customer segments, prototype builds and outsourced development resources; investments in marketing programs; asset write-offs; investments in our business and information technology infrastructure; and fluctuations in stock-based compensation expenses due to timing of equity grants or other factors affecting vesting.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Further, as a result of factors contributing to the fluctuations described above among other factors, many of which are outside our control, our quarterly operating results fluctuate from period to period. Comparing our operating results on a period-to-period basis may not be meaningful, and you should not rely on our past results as an indication of our future performance.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_49"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Critical Accounting Policies and Estimates</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our financial statements are prepared in accordance with U.S. generally accepted accounting principles. These accounting principles require us to make certain estimates and judgments that can affect the reported amounts of assets and liabilities as of the date of the financial statements, as well as the reported amounts of revenue, costs and expenses during the periods presented. We base our estimates, assumptions and judgments on historical experience and on various other factors that are believed to be reasonable under the circumstances. To the extent there are material differences between these estimates and actual results, our financial statements may be affected. We evaluate our estimates, assumptions and judgments on an ongoing basis.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We believe the following critical accounting policies affect our significant judgments and estimates used in the preparation of our financial statements. </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Revenue Recognition</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue is recognized when a performance obligation is satisfied, which occurs when control of the promised goods or services is transferred to the customer, in an amount that reflects the consideration we expect to be entitled to in exchange for those goods or services. Revenue from sales of access and premises systems is recognized when control is transferred to the customer, which is generally when the products are shipped. Revenue from software platform licenses, which provides the customer with a right to use the software as it exists, is generally recognized upfront when product is made available to the customer. Revenue from cloud-based software subscriptions, customer support, maintenance, extended warranty subscriptions and managed services is generally recognized ratably over the contract term. Revenue from professional services and training is recognized as the services are delivered.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A performance obligation is a promise in a contract to transfer a distinct good or service to the customer and is the unit of account. A contract&#8217;s transaction price is allocated to each distinct performance obligation and recognized as revenue when, or as, the performance obligation is satisfied. Our hardware products contain both software and non-software components that function together to deliver the products&#8217; essential functionality and therefore constitutes a single performance obligation as the promise to transfer the individual software and non-software components is not separately identifiable and, therefore, not distinct. Cloud-based software subscriptions can include multi-year agreements with a fixed annual fee for a minimum committed usage level. To the extent that minimum committed usage level each year varies, we have concluded that each year represents a distinct stand-ready performance obligation and the transaction price allocated to each performance obligation is recognized as revenue ratably over each annual period. Our contracts may include multiple performance obligations. For such arrangements, we allocate the contract&#8217;s transaction price to each performance obligation using the relative stand-alone selling price of each distinct good or service in the contract. We generally determine stand-alone selling prices based on the prices charged to customers or our best estimate of stand-alone selling price. Our estimate of stand-alone selling price is established </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">27</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">considering multiple factors including, but not limited to, geographies, market conditions, competitive landscape, internal costs, gross margin objectives, characteristics of targeted customers and pricing practices. The determination of estimated stand-alone selling price is made through consultation with and formal approval by management, taking into consideration the go-to-market strategy.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Inventory Valuation and Supplier Purchase Commitments</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Inventory, which primarily consists of finished goods purchased from CMs or ODMs, is stated at the lower of cost (determined by the first-in, first-out method) and net realizable value. Inbound shipping costs and tariffs are included in the cost of inventory. In addition, from time to time, we procure component inventory primarily as a result of manufacturing discontinuation of critical components by suppliers. We regularly monitor inventory quantities on-hand and record write-downs for excess and obsolete inventory based on our estimate of demand for our products, potential obsolescence of technology, product life cycles and whether pricing trends or forecasts indicate that the carrying value of inventory exceeds our estimated selling price. We also evaluate our supplier purchase commitments, which have increased significantly due to extended lead-times in the current supply-chain environment, and record a liability for excess and obsolete components based on our estimated demand of our products, potential obsolescence of technology and product life cycles. These factors are impacted by market and economic conditions, technology changes and new product introductions and require estimates that may include elements that are uncertain. Actual demand may differ from forecasted demand and may have a material effect on gross profit. If inventory is written down, a new cost basis is established that cannot be increased in future periods. The sale of previously reserved inventory has not had a material impact on our gross margin.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Income Taxes</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We evaluate our tax positions and estimate our current tax exposure along with assessing temporary differences that result from different book to tax treatment of items not currently deductible for tax purposes. These differences result in deferred tax assets and liabilities on our Consolidated Balance Sheets, which are estimated based upon the difference between the financial statement and tax bases of assets and liabilities using the enacted tax rates that will be in effect when these differences reverse. In general, deferred tax assets represent future tax benefits to be received when certain expenses previously recognized in our Consolidated Statements of Comprehensive Income become deductible expenses under applicable income tax laws or loss or credit carryforwards are utilized. Accordingly, realization of our deferred tax assets is dependent on future taxable income against which these deductions, losses and credits can be utilized.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We must assess the likelihood that our deferred tax assets will be recovered from future taxable income, and to the extent we believe that recovery is not more likely than not, we must establish a valuation allowance. Management judgment is required in determining our provision for income taxes, our deferred tax assets and liabilities and any valuation allowance recorded against our net deferred tax assets. In the third quarter of 2021, we reversed the majority of our valuation allowance and recorded on our balance sheet U.S. federal and certain state deferred tax assets of $162 million. As of December 31, 2022, we determined that positive evidence continues to outweigh negative evidence and concluded that it was more likely than not that our U.S. federal and state (with the exception of California) deferred tax assets are realizable. We currently maintain a valuation allowance of $29.9 million for certain U.S. federal and California deferred tax assets.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Recent Accounting Pronouncements Not Yet Adopted</span></div><div style="margin-bottom:5pt;margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">There have been no additional accounting pronouncements or changes in accounting pronouncements that are significant or potentially significant to us.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_52"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Results of Operations for Years Ended December&#160;31, 2022 and 2021</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Revenue</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table sets forth our revenue (dollars in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.952%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td style="width:1.0%"></td><td style="width:2.847%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.600%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022 vs 2021 Change</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">$</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Revenue</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">867,827&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">679,394&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">188,433&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">28&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div><div style="margin-bottom:5pt;margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our revenue increased by $188.4 million, or 28%, during 2022&#160;compared to 2021. The increase in revenue was primarily due to higher revenue from our growing base of small and medium BSP customers and the continuation of BSPs seeking to provide their subscribers a better experience by adopting our platform and managed services. In particular, we added a new medium-sized customer that began to receive significant shipments during the second half of 2022.</span></div><div style="margin-bottom:5pt;margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our revenue is principally derived in the United States. Revenue generated in the United States represented 91% of revenue in 2022 and 83% in 2021. Our primary focus has been and in the near term will continue to be the United States and Canada given our large, direct sales and marketing presence and the amount of government stimulus being invested into underserved and not-</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">28</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-bottom:5pt;margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">served areas of these countries. In 2022, we introduced our platform to the United Kingdom. Over time, we expect to move to additional high average-revenue-per-user markets with our platform.</span></div><div style="margin-bottom:5pt;margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">No customer accounted for more than 10% of our revenue for 2022 or 2021. See Note 11 </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">&#8220;Revenue from Contracts with Customers&#8221;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> to the Consolidated Financial Statements included in this Annual Report on Form 10-K for more details on concentration of revenue for the years presented.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Gross Profit and Gross Margin</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table sets forth our gross profit and gross margin (dollars in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.952%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td style="width:1.0%"></td><td style="width:2.847%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.600%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022 vs 2021 Change</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:middle"><div style="margin-top:3pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">$</span></div></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:middle"><div style="margin-top:3pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">%</span></div></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Gross profit</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">435,428&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">356,587&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">78,841&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">22&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Gross margin</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">50.2&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">52.5&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Gross profit increased by $78.8 million to $435.4 million during 2022 from $356.6 million during 2021. Gross margin decreased to 50.2% during 2022 from 52.5% during 2021. The decrease in gross margin of 230 basis points was mainly due to higher component and logistics costs from the COVID-19-pandemic-induced, supply-chain disruption, which more than offset the increase in gross margin due to increased software and subscription contributions. Going forward, we expect that the effects of the global supply-chain disruption will continue to normalize in 2023, and we expect the software and subscription contributions will grow, resulting in potential gross margin expansion.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Operating Expenses</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Sales and Marketing Expenses</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Sales and marketing expenses consist of personnel costs, employee sales commissions, marketing programs and events, software tools and travel-related expenses. The following table sets forth our sales and marketing expenses (dollars in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.952%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td style="width:1.0%"></td><td style="width:2.847%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.600%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022 vs 2021 Change</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">$</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Sales and marketing</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">174,549&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">125,909&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">48,640&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">39&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Percent of revenue</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">20&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">19&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Sales and marketing expenses increased by $48.6 million during 2022 compared to 2021 primarily due to increases in personnel expenses of $33.6 million related to investments in sales headcount and higher sales incentive compensation, travel expenses of $5.7 million, stock-based compensation of $5.3 million and marketing expenses of $1.9 million.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We expect our investments in sales and marketing will increase in absolute dollars, but be relatively consistent as a percentage of revenue, as we attempt to capitalize on Calix&#8217;s ability to enable new platform capabilities and managed services for our BSP customers.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Research and Development Expenses</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Research and development expenses include personnel costs, outside contractor and consulting services, depreciation on lab equipment, costs of prototypes and overhead allocations. The following table sets forth our research and development expenses (dollars in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.952%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td style="width:1.0%"></td><td style="width:2.847%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.600%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022 vs 2021 Change</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">$</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Research and development</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">131,994&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">101,747&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">30,247&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">30&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Percent of revenue</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">15&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">15&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Percent of gross profit</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">30&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">29&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The increase in research and development expenses of $30.2 million during 2022&#160;compared with 2021 was mainly due to increases in personnel expenses of $15.5 million, stock-based compensation of $5.4 million, outside services of $4.5 million and depreciation and amortization of $1.5 million.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We expect our investments in research and development to increase in absolute dollars, but remain relatively consistent as a percentage of gross profit, as we plan to expand the functionality and capabilities of our platform and deliver new managed services.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">29</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">General and Administrative Expenses</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">General and administrative expenses consist primarily of personnel costs related to our executive, finance, human resources, information technology and legal organizations, outside consulting services, insurance, facilities and fees for professional services. Professional services consist of outside audit, legal, accounting and tax services. The following table sets forth our general and administrative expenses (dollars in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.952%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td style="width:1.0%"></td><td style="width:2.847%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.600%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022 vs 2021 Change</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">$</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">General and administrative</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">76,275&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">55,779&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">20,496&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">37&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Percent of revenue</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The increase in general and administrative expenses of $20.5 million in 2022&#160;compared to 2021 was mainly due to increases in personnel expenses of $8.7 million, stock-based compensation of $8.7 million and outside services of $2.5 million. We made continued investments in our information technology infrastructure in 2022.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We expect our general and administrative investments to increase in absolute dollars but decline slightly as a percentage of revenue over time as we expect revenue to grow.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Restructuring Benefit</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We initiated a restructuring plan in June 2020 to accelerate our platform future and to align with a work-from-anywhere culture. We incurred restructuring charges of $6.3 million in 2020, consisting of facilities-related charges and severance and other termination related benefits. In 2021, we reversed $0.8 million in facilities-related charges as a result of subleasing the abandoned portion of our San Jose headquarters. See Note 4 </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">&#8220;Balance Sheet Details&#8221;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> of the Notes to Consolidated Financial Statements included in this Annual Report on Form 10-K.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Interest and Other Income (Expense), Net</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table sets forth our interest and other expense, net (dollars in thousands):</span></div><div style="text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.952%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td style="width:1.0%"></td><td style="width:2.847%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.600%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022 vs 2021 Change</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">$</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Interest and other income (expense), net</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,432&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,284)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,716&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">212&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr style="height:8pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%">Interest and other income (expense), net increased by $2.7 million in 2022&#160;compared with 2021 mainly due to income from marketable securities.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Income Taxes </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table sets forth our income taxes (dollars in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.952%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td style="width:1.0%"></td><td style="width:2.847%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.600%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022 vs 2021 Change</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">$</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Income taxes</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">13,032&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(165,724)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">178,756&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">108&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Effective tax rate</span></td><td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">24&#160;</span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(228)</span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">During 2022, our current tax expense was $11.1 million, and our deferred tax expense was $1.9 million. Our effective tax rate was higher than the federal statutory rate of 21% due to state taxes, Base Erosion and Anti-Abuse Tax and the impact of stock-based compensation, partially offset by research and development tax credits and stock option windfall deductions.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">During 2021, we recognized an income tax benefit of $162.0 million offset by current income taxes, based on our reassessment of the amount of our U.S. federal and other state deferred tax assets that are more likely than not to be realized, primarily as a result of actual and projected increases in U.S. profitability in the current and future periods.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We continue to maintain a valuation allowance of $29.9&#160;million on certain U.S. federal and California state deferred tax assets that we believe are not more likely than not to be realized in future periods.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our income taxes may be subject to fluctuation during the year and in future years as new information is obtained, which may affect the assumptions used to estimate the annual effective tax rate, including factors such as actual results differing from our estimates of pre-tax earnings in the various jurisdictions in which we operate, which could impact the recognition of our deferred tax assets, the recognition or de-recognition of tax benefits related to uncertain tax positions and changes in or the interpretation of tax laws in jurisdictions where we conduct business.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">30</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">2021 Compared to 2020</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">For a comparison of our results of operations for the years ended December 31, 2021 and 2020, see Item 7 </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">&#8220;Management&#8217;s Discussion and Analysis of Financial Condition and Results of Operations&#8221;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> of our Annual Report on Form 10-K for the year ended December 31, 2021 filed with the SEC on February 22, 2022.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_55"></div><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Liquidity and Capital Resources</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Historically, we have funded our operations and investing activities primarily through cash flow generated from operations, sales of our common stock and various borrowing arrangements. As of December&#160;31, 2022, we had cash, cash equivalents and marketable securities of $241.7 million, which consisted of deposits held at banks and major financial institutions and highly liquid marketable securities such as U.S. government agency securities and commercial paper. This includes $2.7 million of cash primarily held by our foreign subsidiaries. As of December&#160;31, 2022, our liability for taxes that would be payable because of repatriation of undistributed earnings of our foreign subsidiaries to the United States was not significant and limited to withholding taxes considering our existing net operating loss carryovers.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table presents the cash inflows and outflows by activity during 2022 and 2021 (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.304%"><tr><td style="width:1.0%"></td><td style="width:62.476%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.621%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:15.290%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.621%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:15.292%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net cash provided by operating activities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">27,183&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">56,793&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net cash used in investing activities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(24,082)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(110,661)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net cash provided by financing activities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">25,063&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">24,383&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Operating Activities</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our operating activities provided cash of $27.2 million in 2022 and $56.8 million in 2021. The decrease in net cash provided by operating activities during 2022 as compared to 2021 was due primarily to unfavorable charges of $8.3 million in our net operating results after adjustment of non-cash charges and $21.4 million in our net cash outflow resulting from changes in operating assets and liabilities. Non-cash charges consisted of stock-based compensation of $44.8 million, depreciation and amortization of $14.3 million and deferred income taxes of $1.9 million partially offset by net accretion of available-for-sale securities of $1.1 million.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2022, cash outflows from changes in operating assets and liabilities primarily consisted of increases in inventory of $60.3 million to improve our responsiveness to our BSPs&#8217; subscriber demand; in prepaid expenses and other assets of $38.4 million mainly due to an inventory deposit to a CM partner; and in accounts receivable of $8.6 million due to increased revenue. These changes were partially offset by increases in accounts payable of $12.1 million due to increased inventory purchases; in accrued liabilities of $12.2 million, mainly related to accrued compensation and accruals for our Calix ConneXions 2022 Customer Success and Innovation conference; and in deferred revenue of $9.1 million due to our platform subscriptions.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Investing Activities</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2022, cash used in investing activities of $24.1 million consisted of net purchases of marketable securities of $10.0 million and capital expenditures of $14.1 million, primarily related to purchases of test equipment and computer equipment.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Financing Activities</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2022, net cash provided by financing activities of $25.1 million primarily consisted of proceeds from the issuance of common stock related to our equity plans of $27.5 million. This was partially offset by payments related to a financing arrangement of $2.4 million.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">2021 Compared to 2020</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">For a discussion of our liquidity and capital resources and our cash flow activities for the years ended December 31, 2021 and 2020, see Item 7 </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">&#8220;Management&#8217;s Discussion and Analysis of Financial Condition and Results of Operations,&#8221;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> of our Annual Report on Form 10-K for the year ended December 31, 2021, filed with the SEC on February 22, 2022.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">31</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Working Capital and Capital Expenditure Needs</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our material cash commitments include non-cancelable firm purchase commitments, normal recurring trade payables, compensation-related and expense accruals, operating leases and revenue-share obligations. We believe that our outsourced approach to manufacturing provides us significant flexibility in both managing inventory levels and financing our inventory. Furthermore, in July 2022, our Board of Directors authorized a one-year stock repurchase program for up to $100 million of our common stock. During the year ended December&#160;31, 2022, no repurchases were made under the program.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We believe, based on our current operating plan and expected operating cash flows, that our existing cash, cash equivalents and marketable securities will be sufficient to meet our anticipated cash needs for at least the next twelve months. If we are unable to execute on our current operating plan or continue to generate operating income and positive cash flows, our liquidity, results of operations and financial condition may be adversely affected, and we may need to cease our repurchase program or seek other sources of liquidity, including the sale of additional equity or borrowing, to support our working capital needs. In addition, we may choose to seek other sources of liquidity even if we believe we have generated sufficient cash flows to support our operational needs. There is no assurance that any other sources of liquidity may be available to us on acceptable terms or at all. If we are unable to generate sufficient cash flows or obtain other sources of liquidity, we will be forced to limit our development activities, reduce our investment in growth initiatives and institute cost-cutting measures, all of which may adversely impact our business and potential growth.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Contractual Obligations and Commitments</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our principal commitments as of December&#160;31, 2022 consisted of our contractual obligations under non-cancelable outstanding purchase obligations, operating lease obligations for office space and a revenue share obligation. The following table summarizes our contractual obligations as of December&#160;31, 2022 (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:33.936%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.113%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.578%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.113%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.578%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.113%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.578%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.113%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.578%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.113%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.587%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="27" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Payments Due by Period</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Less Than 1 Year</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">1-3 Years</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">3-5 Years</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">More Than 5 Years</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Non-cancelable purchase commitments </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:5.85pt;font-weight:400;line-height:100%;position:relative;top:-3.15pt;vertical-align:baseline">(1)</span></div></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">398,366&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">316,394&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62,710&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">12,092&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,170&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Operating lease obligations </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:5.85pt;font-weight:400;line-height:100%;position:relative;top:-3.15pt;vertical-align:baseline">(2)</span></div></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">13,573&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,629&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8,413&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">531&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Revenue share obligation </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:5.85pt;font-weight:400;line-height:100%;position:relative;top:-3.15pt;vertical-align:baseline">(3)</span></div></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">11,902&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,209&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,693&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">423,841&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">328,232&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">75,816&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">12,623&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,170&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:5pt"><span><br/></span></div><div style="padding-left:22.5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:5.85pt;font-weight:400;line-height:112%;position:relative;top:-3.15pt;vertical-align:baseline">(1)</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:112%"> Represents outstanding purchase commitments to be delivered by our third-party manufacturers or other vendors. See Note 5 </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:112%">&#8220;Commitments and Contingencies&#8221; </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:112%">of the Notes to Consolidated Financial Statements included in this Annual Report on Form 10-K for further discussion regarding our outstanding purchase commitments related to our third-party manufacturers.</span></div><div style="margin-top:6pt;padding-left:22.5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:5.85pt;font-weight:400;line-height:120%;position:relative;top:-3.15pt;vertical-align:baseline">(2)</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Future minimum operating lease obligations in the table above primarily include payments for our office locations, which expire at various dates through 2027.  See Note 5 </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">&#8220;Commitments and Contingencies&#8221;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> of the Notes to Consolidated Financial Statements included in this Annual Report on Form 10-K for further discussion regarding our operating leases.</span></div><div style="margin-top:6pt;padding-left:22.5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:5.85pt;font-weight:400;line-height:120%;position:relative;top:-3.15pt;vertical-align:baseline">(3)</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Represents remaining payments related to a revenue-share obligation, including imputed interest associated with developed software product and related enhancements by an engineering service provider. The schedule reflects our expected revenue-share and true-up payments based on our revenue projections for the developed products over a sales period through March 2024. If the minimum revenue-share payments are not achieved by the end of that period, a true-up payment will be due. See Note 4 </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">&#8220;Balance Sheet Details&#8221;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> of the Notes to Consolidated Financial Statements included in this Annual Report on Form 10-K for further discussion regarding our outstanding liability.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_58"></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 7A.&#160;&#160;&#160;&#160;Quantitative and Qualitative Disclosures About Market Risk</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Interest Rate Risk</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The primary objectives of our investment activity are to preserve principal, provide liquidity and maximize income without significantly increasing risk. By policy, we do not enter into investments for trading or speculative purposes. As of December&#160;31, 2022, we had cash, cash equivalents and marketable securities of $241.7 million, which was held primarily in cash, money market funds and highly liquid marketable securities such as U.S. government agency securities and commercial paper. Due to the nature of these money market funds and highly liquid marketable securities, we believe that we do not have any material exposure to changes in the fair value of our cash equivalents and marketable securities because of changes in interest rates.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">32</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Foreign Currency Exchange Risk</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our primary foreign currency exposures are described below.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Economic Exposure</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The direct effect of foreign currency fluctuations on our sales and expenses has not been material because our sales and expenses are primarily denominated in U.S. dollars, or USD. However, we are indirectly exposed to changes in foreign currency exchange rates to the extent of our use of foreign CMs whom we pay in USD. Increases in the local currency rates of these vendors in relation to USD could cause an increase in the price of products that we purchase. Additionally, if the USD strengthens relative to other currencies, such strengthening could have an indirect effect on our sales to the extent it raises the cost of our products to non-U.S. customers and thereby reduces demand. A weaker USD could have the opposite effect. The precise indirect effect of currency fluctuations is difficult to measure or predict because our sales are influenced by many factors in addition to the impact of such currency fluctuations.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Translation Exposure</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our sales contracts are primarily denominated in USD and, therefore, most of our revenue is not subject to foreign currency risk. We are directly exposed to changes in foreign exchange rates to the extent such changes affect our expenses related to our foreign assets and liabilities with our subsidiaries in China, India and the United Kingdom, whose functional currencies are Chinese Renminbi, or RMB, Indian Rupee, or INR, and British Pounds Sterling, or GBP.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our operating expenses are incurred primarily in the United States, in China associated with our research and development operations that are maintained there, in India for our center of excellence and in the United Kingdom for our international sales and marketing activities. Our operating expenses are generally denominated in the functional currencies of our subsidiaries in which the operations are located. The percentages of our operating expenses denominated in the following currencies for the indicated fiscal years were as follows:</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"></td><td style="width:56.395%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.259%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">USD</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">91&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">92&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">92&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">RMB</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">GBP</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">INR</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr></table></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">If USD had appreciated or depreciated by 10%, relative to RMB, GBP and INR, our operating expenses for 2022 would have decreased or increased by approximately $3.3 million, or approximately 1%.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Foreign exchange rate fluctuations may also adversely impact our financial position as the assets and liabilities of our foreign operations are translated into USD in preparing our Consolidated Balance Sheets. The effect of foreign exchange rate fluctuations on our consolidated financial position for the year ended December&#160;31, 2022 was a net translation loss of $0.6 million. This loss is recognized as an adjustment to stockholders&#8217; equity through &#8220;Accumulated other comprehensive loss.&#8221;</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Transaction Exposure</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We have certain assets and liabilities, primarily accounts receivables and accounts payable (including inter-company transactions) that are denominated in currencies other than the relevant entity&#8217;s functional currency. In certain circumstances, changes in the functional currency value of these assets and liabilities create fluctuations in our reported consolidated financial position, cash flows and results of operations. Periodically, we use derivatives to hedge against fluctuations in foreign exchange rates. We do not enter into derivatives for speculative or trading purposes. We use foreign currency forward contracts to mitigate variability in gains and losses generated from the re-measurement of certain assets denominated in foreign currencies. These foreign exchange forward contracts typically have maturities of approximately one to two months. As of December&#160;31, 2022, we had no forward contracts outstanding. Transaction gains and losses on these foreign currency denominated assets and liabilities are recognized each period within &#8220;Other income (expense), net&#8221; in our Consolidated Statements of Comprehensive Income. During the year ended December&#160;31, 2022, we recognized a net loss related to these foreign exchange assets and liabilities of approximately $0.3 million.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">33</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_61"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 8. &#160;&#160;&#160;&#160;Financial Statements and Supplementary Data</span></div><div style="margin-top:8pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:85.576%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.224%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_64">Report of Independent Registered Public Accounting Firm</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_64">35</a></span></div></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_67">Consolidated Balance Sheets, As of December&#160;31, 202</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_67">2</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_67"> and 202</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_67">1</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_67">37</a></span></div></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70">Consolidated Statements of Comprehensive Income</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70">, Years Ended December&#160;31, 202</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70">2</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70">, 202</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70">1</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70"> and 20</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70">20</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70">38</a></span></div></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_73">Consolidated Statements of Stockholders&#8217; Equity, Years Ended December&#160;31, 202</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_73">2</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_73">, 202</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_73">1</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_73"> and 20</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_73">20</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_73">39</a></span></div></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76">Consolidated Statements of Cash Flows, Years Ended December&#160;31, 20</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76">2</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76">2</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76">, 20</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76">2</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76">1</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76"> and 20</a><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76">20</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76">40</a></span></div></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_79">Notes to Consolidated Financial Statements</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_79">41</a></span></div></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr></table></div><div><span><br/></span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">34</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_64"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-bottom:12pt;margin-top:6pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">Report of Independent Registered Public Accounting Firm</span></div><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">To the Stockholders and Board of Directors</span></div><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Calix, Inc.:</span></div><div style="margin-bottom:3pt"><span><br/></span></div><div style="margin-bottom:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-style:italic;font-weight:400;line-height:120%">Opinions on the Consolidated Financial Statements and Internal Control Over Financial Reporting</span></div><div style="margin-bottom:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">We have audited the accompanying consolidated balance sheets of Calix, Inc. and subsidiaries (the Company) as of December&#160;31, 2022 and 2021, the related consolidated statements of comprehensive income, stockholders&#8217; equity, and cash flows for each of the years in the three-year period ended December&#160;31, 2022, and the related notes (collectively, the consolidated financial statements). We also have audited the Company&#8217;s internal control over financial reporting as of December&#160;31, 2022, based on criteria established in </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-style:italic;font-weight:400;line-height:120%">Internal Control </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#8211;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-style:italic;font-weight:400;line-height:120%"> Integrated Framework</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-style:italic;font-weight:400;line-height:120%">(2013)</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"> issued by the Committee of Sponsoring Organizations of the Treadway Commission.  </span></div><div style="margin-bottom:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">In our opinion, the consolidated financial statements referred to above present fairly, in all material respects, the financial position of the Company as of December&#160;31, 2022 and 2021, and the results of its operations and its cash flows for each of the years in the three-year period ended December&#160;31, 2022, in conformity with U.S. generally accepted accounting principles. Also in our opinion, the Company maintained, in all material respects, effective internal control over financial reporting as of December&#160;31, 2022 based on criteria established in </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-style:italic;font-weight:400;line-height:120%">Internal Control </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#8211;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-style:italic;font-weight:400;line-height:120%"> Integrated Framework (2013)</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"> issued by the Committee of Sponsoring Organizations of the Treadway Commission.</span></div><div style="margin-bottom:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-style:italic;font-weight:400;line-height:120%">Basis for Opinions</span></div><div style="margin-bottom:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">The Company&#8217;s management is responsible for these consolidated financial statements, for maintaining effective internal control over financial reporting, and for its assessment of the effectiveness of internal control over financial reporting, included in the accompanying</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-style:italic;font-weight:700;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Management&#8217;s Report on Internal Control Over Financial Reporting. Our responsibility is to express an opinion on the Company&#8217;s consolidated financial statements and an opinion on the Company&#8217;s internal control over financial reporting based on our audits. We are a public accounting firm registered with the Public Company Accounting Oversight Board (United States) (PCAOB) and are required to be independent with respect to the Company in accordance with the U.S. federal securities laws and the applicable rules and regulations of the Securities and Exchange Commission and the PCAOB.</span></div><div style="margin-bottom:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">We conducted our audits in accordance with the standards of the PCAOB. Those standards require that we plan and perform the audits to obtain reasonable assurance about whether the consolidated financial statements are free of material misstatement, whether due to error or fraud, and whether effective internal control over financial reporting was maintained in all material respects.</span></div><div style="margin-bottom:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Our audits of the consolidated financial statements included performing procedures to assess the risks of material misstatement of the consolidated financial statements, whether due to error or fraud, and performing procedures that respond to those risks. Such procedures included examining, on a test basis, evidence regarding the amounts and disclosures in the consolidated financial statements. Our audits also included evaluating the accounting principles used and significant estimates made by management, as well as evaluating the overall presentation of the consolidated financial statements. Our audit of internal control over financial reporting included obtaining an understanding of internal control over financial reporting, assessing the risk that a material weakness exists, and testing and evaluating the design and operating effectiveness of internal control based on the assessed risk. Our audits also included performing such other procedures as we considered necessary in the circumstances. We believe that our audits provide a reasonable basis for our opinions.</span></div><div style="margin-bottom:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-style:italic;font-weight:400;line-height:120%">Definition and Limitations of Internal Control Over Financial Reporting </span></div><div style="margin-bottom:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">A company&#8217;s internal control over financial reporting is a process designed to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles. A company&#8217;s internal control over financial reporting includes those policies and procedures that (1)&#160;pertain to the maintenance of records that, in reasonable detail, accurately and fairly reflect the transactions and dispositions of the assets of the company; (2)&#160;provide reasonable assurance that transactions are recorded as necessary to permit preparation of financial statements in accordance with generally accepted accounting principles, and that receipts and expenditures of the company are being made only in accordance with authorizations of management and directors of the company; and (3)&#160;provide reasonable assurance regarding prevention or timely detection of unauthorized acquisition, use, or disposition of the company&#8217;s assets that could have a material effect on the financial statements.</span></div><div style="margin-bottom:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Because of its inherent limitations, internal control over financial reporting may not prevent or detect misstatements. Also, projections of any evaluation of effectiveness to future periods are subject to the risk that controls may become inadequate because of changes in conditions, or that the degree of compliance with the policies or procedures may deteriorate.</span></div><div style="margin-bottom:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-style:italic;font-weight:400;line-height:120%">Critical Audit Matter</span></div><div style="margin-bottom:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">The critical audit matter communicated below is a matter arising from the current period audit of the consolidated financial statements that was communicated or required to be communicated to the audit committee and that: (1) relates to accounts or disclosures that are material to the consolidated financial statements and (2) involved our especially challenging, subjective, or complex judgments. The communication of a critical audit matter does not alter in any way our opinion on the consolidated financial statements, taken as a whole, and we are not, by communicating the critical audit matter below, providing a separate opinion on the critical audit matter or on the accounts or disclosures to which it relates.</span></div><div style="margin-bottom:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-style:italic;font-weight:400;line-height:120%">Evaluation of net realizable value of inventory and excess and obsolete inventory liabilities</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">35</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-bottom:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">As discussed in Notes 1, 4 and 5 to the consolidated financial statements, the Company has inventories with a carrying value of $149.2 million and excess and obsolete inventory liabilities of $10.3 million as of December 31, 2022. The Company adjusts the inventory carrying value for excess or obsolete inventory based on assumptions about future demand for products, potential obsolescence of technology, product life cycle, and whether pricing trends or forecasts indicate that the carrying value of inventory exceeds the estimated selling price. These factors are impacted by market and economic conditions, technology changes and new product introductions and require significant estimates that may include elements that are uncertain. The Company also records a liability and a charge to cost of revenue for estimated losses on inventory the Company is obligated to purchase from its manufacturers when the inventory has been rendered excess and obsolete due to manufacturing and engineering change orders resulting from design changes, manufacturing discontinuation of products by its suppliers, or in cases where the Company has committed inventory levels that greatly exceed projected demand.</span></div><div style="margin-bottom:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">We identified the evaluation of net realizable value of inventory and excess and obsolete inventory liabilities as a critical audit matter. Evaluation of the Company&#8217;s forecasted demand, including the Company&#8217;s determination of the effect of market and economic conditions, technology and design changes, new product introductions, and discontinuation of products by its suppliers required significant auditor judgment.</span></div><div style="margin-bottom:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">The following are the primary procedures we performed to address this critical audit matter. We evaluated the design and tested the operating effectiveness of certain internal controls related to the Company&#8217;s inventory process. This included controls over the reviews of the estimates of the net realizable value of excess or obsolete inventory and liabilities for losses on inventory the Company is obligated to purchase from its manufacturers.  For a selection of inventory items, we (1) reperformed the analysis provided by the Company to assess the accuracy of the net realizable value of inventory by comparing historical sales activity, customer order backlog, or demand forecasts to the inventory on hand quantities, and (2) performed inquiries of Company&#8217;s personnel and inspected documents regarding market and economic conditions, technology and design changes, and new product introductions. We evaluated the reasonableness of management&#8217;s assumptions used to estimate the excess and obsolete inventory liabilities considering (1) inquiries of Company&#8217;s personnel and inspection of documents regarding market and economic conditions, technology and design changes, or supplier discontinuations, (2) historical reimbursements to suppliers for excess and obsolete component inventory, and (3) the excess and obsolete liabilities and purchase commitment trends.</span></div><div><span><br/></span></div><div style="margin-bottom:3pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">/s/ <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:AuditorName" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182NC9mcmFnOjc1OTMxMWI2YzAwODQ0MmRiYThkMGM0YmVkN2I3ODJmL3RleHRyZWdpb246NzU5MzExYjZjMDA4NDQyZGJhOGQwYzRiZWQ3Yjc4MmZfMTMyNjE_a2b21683-2ab8-4bad-b3ed-515442a93348">KPMG LLP</ix:nonNumeric></span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">We have served as the Company&#8217;s auditor since 2015. </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:AuditorLocation" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182NC9mcmFnOjc1OTMxMWI2YzAwODQ0MmRiYThkMGM0YmVkN2I3ODJmL3RleHRyZWdpb246NzU5MzExYjZjMDA4NDQyZGJhOGQwYzRiZWQ3Yjc4MmZfMTMyNjM_04b42724-9000-4985-a79f-790303d5041b">Santa Clara, California</ix:nonNumeric></span></div><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">February&#160;21, 2023 </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">36</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_67"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:9pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">CALIX, INC.</span></div><div style="margin-top:9pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">CONSOLIDATED BALANCE SHEETS</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">(In thousands, except par value)</span></div><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:98.830%"><tr><td style="width:1.0%"></td><td style="width:73.456%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.427%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.994%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.427%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.996%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">ASSETS</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current assets:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash and cash equivalents</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNC0yLTEtMS0zNjE5OA_7440f237-88de-440c-a9ea-3724a9e90f70">79,073</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNC00LTEtMS0zNjE5OA_3d75cbd4-d830-482c-bf2b-a04a6a7144d8">51,333</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Marketable securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNS0yLTEtMS0zNjE5OA_e56a6463-8867-48bb-a8c8-423ee47150e8">162,642</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNS00LTEtMS0zNjE5OA_62617aed-760a-4a41-a491-a9745188806f">153,002</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accounts receivable, net</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:AccountsReceivableNetCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNi0yLTEtMS0zNjE5OA_41f6692b-d263-4b27-8721-6d5848db8b21">93,804</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:AccountsReceivableNetCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNi00LTEtMS0zNjE5OA_959e0cf3-a491-4471-a012-16850797a9d4">85,219</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Inventory</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:InventoryNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNy0yLTEtMS0zNjE5OA_28bb3ece-a1df-4897-9dc1-d01657870745">149,160</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:InventoryNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNy00LTEtMS0zNjE5OA_8ca588ac-4dc4-4d10-a933-eadf6b85f1b6">88,880</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Prepaid expenses and other current assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfOC0yLTEtMS0zNjE5OA_96f306cf-6095-404e-9c09-e7087f79dc37">62,691</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfOC00LTEtMS0zNjE5OA_bb95d12e-fffa-4453-8b26-24361e7b4555">30,811</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 37pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total current assets</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:AssetsCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfOS0yLTEtMS0zNjE5OA_4745ecf8-539c-4c85-beb0-560e2fcbc01d">547,370</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:AssetsCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfOS00LTEtMS0zNjE5OA_62fdc31c-63a3-4018-8230-2143feda23ee">409,245</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Property and equipment, net</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTAtMi0xLTEtMzYxOTg_b43221ed-bf9d-46a0-b3d7-d8d76d12b52c">25,834</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTAtNC0xLTEtMzYxOTg_ba052612-41e2-4742-8215-15f89627f5dd">21,783</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Right-of-use operating leases</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:OperatingLeaseRightOfUseAsset" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTEtMi0xLTEtMzYxOTg_e06f0df6-ec23-4558-8734-ab7cc1cead51">9,283</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:OperatingLeaseRightOfUseAsset" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTEtNC0xLTEtMzYxOTg_cae8e0f9-1531-460e-b191-45f8624b2eb7">12,182</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred tax assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:DeferredIncomeTaxAssetsNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTItMi0xLTEtMzYxOTg_fd40dd87-40ee-4eea-bf66-ecbf137852e9">167,031</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:DeferredIncomeTaxAssetsNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTItNC0xLTEtMzYxOTg_c2673ac9-83c3-4fe6-969b-d4eb73f02df6">168,962</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Goodwill</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:Goodwill" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTMtMi0xLTEtMzYxOTg_521118b7-395a-4386-b940-f7f031af52a7">116,175</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:Goodwill" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTMtNC0xLTEtMzYxOTg_7b47b5d3-ece4-4cc9-bb5a-40d5c369a97c">116,175</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:OtherAssetsNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTQtMi0xLTEtMzYxOTg_527ab7ee-d39b-4ac3-9d36-5915e5376936">19,142</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:OtherAssetsNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTQtNC0xLTEtMzYxOTg_07d7bf08-54c9-45de-801e-26e6eac23180">13,685</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:Assets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTUtMi0xLTEtMzYxOTg_fcd9adf2-0c8b-466d-a548-55414d493f05">884,835</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:Assets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTUtNC0xLTEtMzYxOTg_99c26f2c-dcf8-44ec-827a-614ce6a24721">742,032</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">LIABILITIES AND STOCKHOLDERS&#8217; EQUITY</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current liabilities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accounts payable</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:AccountsPayableCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTgtMi0xLTEtMzYxOTg_6a430fe0-ace6-4617-a771-9c46c14fbbbb">41,407</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:AccountsPayableCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTgtNC0xLTEtMzYxOTg_e74069e5-8893-4b44-b9bc-398da3813660">29,061</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accrued liabilities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:AccruedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTktMi0xLTEtMzYxOTg_cbca86ad-c54a-4986-94ba-473d2e2acc83">90,474</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:AccruedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTktNC0xLTEtMzYxOTg_3cdbd83c-3919-48ad-8c61-91c3078976af">71,597</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred revenue</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:ContractWithCustomerLiabilityCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjAtMi0xLTEtMzYxOTg_835131e4-1730-449f-89d3-6a976fad3084">33,541</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:ContractWithCustomerLiabilityCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjAtNC0xLTEtMzYxOTg_05591d57-263d-4608-91de-5a953c405d66">27,478</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 37pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total current liabilities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:LiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjEtMi0xLTEtMzYxOTg_53bf71aa-73ed-4c70-8d15-83c76f1b5ef2">165,422</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:LiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjEtNC0xLTEtMzYxOTg_ce2d4376-64c4-4afd-a5c9-1723cb3821f8">128,136</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Long-term portion of deferred revenue</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:ContractWithCustomerLiabilityNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjItMi0xLTEtMzYxOTg_0ef15dec-dd28-4d52-ba91-8a1c51ad2e59">25,072</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:ContractWithCustomerLiabilityNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjItNC0xLTEtMzYxOTg_78e6d129-802d-41f5-8e84-3ee3bdba14fd">22,016</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Operating leases</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:OperatingLeaseLiabilityNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjMtMi0xLTEtMzYxOTg_483ddae8-6530-4718-87ab-74fb2eeece25">8,442</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:OperatingLeaseLiabilityNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjMtNC0xLTEtMzYxOTg_618a4d49-ab9e-485c-b841-da23fe704c71">12,376</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other long-term liabilities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:OtherLiabilitiesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjQtMi0xLTEtMzYxOTg_7c7eb3f6-6df0-4835-9957-1298645712bd">6,332</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:OtherLiabilitiesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjQtNC0xLTEtMzYxOTg_837cec0f-2c29-43b4-b603-c8f939a814f7">11,076</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total liabilities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:Liabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjUtMi0xLTEtMzYxOTg_9692399c-f5ea-4797-b4e8-0bd0a470c67b">205,268</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:Liabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjUtNC0xLTEtMzYxOTg_83633c33-3454-48a4-b907-72da18c797f2">173,604</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commitments and contingencies (See Note 5)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" xsi:nil="true" name="us-gaap:CommitmentsAndContingencies" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjYtMi0xLTEtMzYxOTg_2dd7d4d3-4101-45e0-8613-06a86092ba5a"></ix:nonFraction></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" xsi:nil="true" name="us-gaap:CommitmentsAndContingencies" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjYtNC0xLTEtMzYxOTg_e9de35e6-8355-4e33-89b7-4ebbfea73a78"></ix:nonFraction></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stockholders&#8217; equity:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="padding-left:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Preferred stock, $<ix:nonFraction unitRef="usdPerShare" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="INF" name="us-gaap:PreferredStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl8yMQ_620381eb-588d-43fc-a0d6-b37927b09e67"><ix:nonFraction unitRef="usdPerShare" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="INF" name="us-gaap:PreferredStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl8yMQ_a6d4dc5e-7f90-4913-968a-6807d4b3361b">0.025</ix:nonFraction></ix:nonFraction> par value; <ix:nonFraction unitRef="shares" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="INF" name="us-gaap:PreferredStockSharesAuthorized" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl8zNQ_a41d7077-3872-4311-b6db-2cb7b1959931"><ix:nonFraction unitRef="shares" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="INF" name="us-gaap:PreferredStockSharesAuthorized" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl8zNQ_be6ae076-d8d3-4ccf-9fcb-f376c3f37131">5,000</ix:nonFraction></ix:nonFraction> shares authorized; <ix:nonFraction unitRef="shares" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="INF" name="us-gaap:PreferredStockSharesIssued" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl81Nw_2e89c7dd-7479-46cf-bacd-53b34b28f830"><ix:nonFraction unitRef="shares" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="INF" name="us-gaap:PreferredStockSharesOutstanding" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl81Nw_44134196-220e-4e7f-adc5-32c791377611"><ix:nonFraction unitRef="shares" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="INF" name="us-gaap:PreferredStockSharesOutstanding" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl81Nw_8125353f-1c57-4ac6-a8c9-739c11c3e91f"><ix:nonFraction unitRef="shares" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="INF" name="us-gaap:PreferredStockSharesIssued" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl81Nw_b5acc682-1add-4af0-a2b3-a6fd8860275b">no</ix:nonFraction></ix:nonFraction></ix:nonFraction></ix:nonFraction> shares issued and outstanding as of December 31, 2022 and 2021</span></div></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:PreferredStockValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMi0xLTEtMzYxOTg_a69c5684-2c8f-4c7d-aed5-4b5edb207265">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:PreferredStockValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtNC0xLTEtMzYxOTg_5542edad-b917-4e83-ac7b-fcc699deeeb8">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="padding-left:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Common stock, $<ix:nonFraction unitRef="usdPerShare" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="INF" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18xOA_11e16421-afd7-4b06-b70f-57ff48a1f1ae"><ix:nonFraction unitRef="usdPerShare" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="INF" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18xOA_4d5d248f-2775-4ff9-9d01-3f3af20977b1">0.025</ix:nonFraction></ix:nonFraction> par value; <ix:nonFraction unitRef="shares" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="INF" name="us-gaap:CommonStockSharesAuthorized" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18zMg_5b5be5f5-2b16-405f-a286-b84c10594c9c"><ix:nonFraction unitRef="shares" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="INF" name="us-gaap:CommonStockSharesAuthorized" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18zMg_6d70a73d-2dc4-418b-b424-b4365a6afd09">100,000</ix:nonFraction></ix:nonFraction> shares authorized; <ix:nonFraction unitRef="shares" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:CommonStockSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M181NA_32636c17-0642-4940-beed-cfd20add5fa4"><ix:nonFraction unitRef="shares" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:CommonStockSharesIssued" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M181NA_a4a3173b-523d-4dce-a875-a9eb661cf641">65,735</ix:nonFraction></ix:nonFraction> shares issued and outstanding as of December 31, 2022, and <ix:nonFraction unitRef="shares" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:CommonStockSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18xMTY_560bdaf8-6020-4665-98a1-c9a77df73648"><ix:nonFraction unitRef="shares" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:CommonStockSharesIssued" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18xMTY_80890246-b111-4424-9b24-58be070d44b5">64,274</ix:nonFraction></ix:nonFraction> shares issued and outstanding as of December 31, 2021</span></div></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:CommonStockValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMi0xLTEtMzYxOTg_d0486d05-784b-4180-b65b-9c93126cbbd0">1,644</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:CommonStockValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktNC0xLTEtMzYxOTg_afaf9f37-3149-43ae-8228-a7782171e367">1,607</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Additional paid-in capital</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:AdditionalPaidInCapitalCommonStock" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzAtMi0xLTEtMzYxOTg_68fc6531-9e87-496e-a876-4504390e82ea">1,070,100</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:AdditionalPaidInCapitalCommonStock" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzAtNC0xLTEtMzYxOTg_32ab1619-710f-4dc8-8bea-7501dbae63fe">997,855</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accumulated other comprehensive loss</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" sign="-" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzEtMi0xLTEtMzYxOTg_41d2411e-271f-442a-974e-3fcb39acb9b8">2,473</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" sign="-" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzEtNC0xLTEtMzYxOTg_24496e97-c374-4e39-99aa-15356e55d78a">320</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accumulated deficit</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" sign="-" name="us-gaap:RetainedEarningsAccumulatedDeficit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzItMi0xLTEtMzYxOTg_a6462414-9a06-4c46-b2a9-a6e6a28decf7">389,704</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" sign="-" name="us-gaap:RetainedEarningsAccumulatedDeficit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzItNC0xLTEtMzYxOTg_5cd51b84-5d3c-46a5-9612-e43c0561d4d9">430,714</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 37pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total stockholders&#8217; equity</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzMtMi0xLTEtMzYxOTg_cf79c888-0231-47d8-89e6-a113e8c1da4c">679,567</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzMtNC0xLTEtMzYxOTg_afd3a1bf-6dcf-436c-9e03-9f50579adb73">568,428</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:LiabilitiesAndStockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzQtMi0xLTEtMzYxOTg_09568e2c-d601-49b2-9836-71d444c21e0f">884,835</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:LiabilitiesAndStockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzQtNC0xLTEtMzYxOTg_392bff09-1284-46cd-8bd4-18fc8ac1c125">742,032</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="text-align:center"><span><br/></span></div><div style="margin-top:12pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">See accompanying notes to consolidated financial statements.</span></div><div style="text-align:center"><span><br/></span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">37</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_70"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">CALIX, INC.</span></div><div style="margin-top:9pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">(In thousands, except per share data)</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.122%"><tr><td style="width:1.0%"></td><td style="width:60.846%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.422%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.961%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.422%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.961%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.422%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.966%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr style="height:12pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Revenue</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMy0yLTEtMS0zODI0NQ_c9cff09c-8936-418b-9198-c7cd48519cc6">867,827</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMy00LTEtMS0zODI0NQ_8ebcc7d8-3379-44cd-b97b-f08e9d5aa35f">679,394</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMy02LTEtMS0zODI0NQ_390687d6-27df-4ed8-b028-9a0ad431cd22">541,239</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cost of revenue</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:CostOfGoodsAndServicesSold" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNC0yLTEtMS0zODI0NQ_9c44dc58-5855-4dd3-b17d-8703f54c7741">432,399</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:CostOfGoodsAndServicesSold" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNC00LTEtMS0zODI0NQ_c794b154-f759-4f4f-9eb7-76e9f07c5540">322,807</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:CostOfGoodsAndServicesSold" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNC02LTEtMS0zODI0NQ_ab64cbd7-2ac0-430b-a343-2f05fc713981">274,220</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Gross profit</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:GrossProfit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTAtMi0xLTEtMzYxOTg_e9c9c353-3084-4f21-a783-541db9f43c38">435,428</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:GrossProfit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTAtNC0xLTEtMzYxOTg_c74054e7-3ed5-4537-9e3c-b76b8437200b">356,587</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:GrossProfit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTAtNi0xLTEtMzYxOTg_584ba3c6-5976-43d4-a4cf-f32634535f03">267,019</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Operating expenses:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Sales and marketing</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:SellingAndMarketingExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTItMi0xLTEtMzYxOTg_982739fe-cd81-436d-9951-ff18162d87e8">174,549</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:SellingAndMarketingExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTItNC0xLTEtMzYxOTg_2b6ab719-79c4-4b20-8855-cd835dee8422">125,909</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:SellingAndMarketingExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTItNi0xLTEtMzYxOTg_9a53e5f1-81b2-45a0-8a9f-af04d80bcfc2">94,185</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Research and development</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:ResearchAndDevelopmentExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTMtMi0xLTEtMzYxOTg_74816185-bf53-4e95-a27b-bfa02979a77b">131,994</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:ResearchAndDevelopmentExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTMtNC0xLTEtMzYxOTg_5d5c4485-4d4c-4cb4-8b5a-273da864b324">101,747</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:ResearchAndDevelopmentExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTMtNi0xLTEtMzYxOTg_1822deab-6483-4a52-8256-1735d4baf389">85,258</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">General and administrative</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:GeneralAndAdministrativeExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTQtMi0xLTEtMzYxOTg_2514435c-263e-4611-918a-1e463efd0598">76,275</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:GeneralAndAdministrativeExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTQtNC0xLTEtMzYxOTg_13033071-fc6a-48a5-9592-00abbf1bc9cb">55,779</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:GeneralAndAdministrativeExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTQtNi0xLTEtMzYxOTg_1de5b320-9562-4dc8-b5b2-41b73cbe2336">44,444</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Restructuring charges (benefit)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:RestructuringCharges" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTUtMi0xLTEtMzYxOTg_a01e0a02-a48b-4713-bee4-9994e90bc84b">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTUtNC0xLTEtMzYxOTg_a90e7190-a291-4138-99bf-a6311324b475">786</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringCharges" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTUtNi0xLTEtMzYxOTg_b93650b4-e4f2-4da8-a4d7-13d736e1c55e">6,286</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 37pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total operating expenses</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:OperatingExpenses" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTctMi0xLTEtMzYxOTg_da204b5d-ffad-4681-9dc3-2f8abdfcf9e3">382,818</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:OperatingExpenses" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTctNC0xLTEtMzYxOTg_31fc03e3-e301-4bdd-ad7d-251f49af4337">282,649</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:OperatingExpenses" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTctNi0xLTEtMzYxOTg_044e8b46-5e23-4eab-ab49-22706a2e1c73">230,173</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Operating income</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:OperatingIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTgtMi0xLTEtMzYxOTg_bcd996a2-481f-45ab-b513-26ab6b8bb1b7">52,610</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:OperatingIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTgtNC0xLTEtMzYxOTg_46f17830-e76f-4600-93b0-d93617b64c4c">73,938</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:OperatingIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTgtNi0xLTEtMzYxOTg_bd7582d9-5288-4c0d-b903-c792d380b064">36,846</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Interest and other income (expense), net:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Interest income (expense), net</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:InvestmentIncomeNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjAtMi0xLTEtMzYxOTg_7cc2a909-f400-48c4-a37b-082fc1c8fc6d">2,009</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:InvestmentIncomeNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjAtNC0xLTEtMzYxOTg_34d14db9-0cc8-4bb6-aa65-35bbc4b01e4b">402</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:InvestmentIncomeNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjAtNi0xLTEtMzYxOTg_d54e188d-e925-43e6-8430-e705d078473b">1,585</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other expense, net</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" sign="-" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjEtMi0xLTEtMzYxOTg_45632e1c-018f-4cd0-9fb0-eda81c3560bf">577</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjEtNC0xLTEtMzYxOTg_5b0fb259-805e-4f2f-94d8-903de07d5414">882</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjEtNi0xLTEtMzYxOTg_93032e7d-0c9e-4a9c-b544-c413d85b3bee">977</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 37pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total interest and other income (expense), net</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:NonoperatingIncomeExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjItMi0xLTEtMzYxOTg_90a6e578-9fa9-4c95-9169-d9234d99ead3">1,432</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:NonoperatingIncomeExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjItNC0xLTEtMzYxOTg_5b4c570f-69fa-46ec-89b9-d3ad296b909e">1,284</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:NonoperatingIncomeExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjItNi0xLTEtMzYxOTg_9adfb2a7-8b5f-4adf-bf92-4c02ae206241">2,562</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Income before income taxes</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjMtMi0xLTEtMzYxOTg_24b907fb-5c4b-41af-9aa2-799f87827643">54,042</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjMtNC0xLTEtMzYxOTg_ec69310c-068b-447d-aa8f-ad3df8c01959">72,654</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjMtNi0xLTEtMzYxOTg_bdca91b5-ae2e-4bbc-9228-6887a95fe619">34,284</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Income taxes</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:IncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjQtMi0xLTEtMzYxOTg_8f0933e1-96cc-4e41-9c2f-b001fac7d6b2">13,032</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:IncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjQtNC0xLTEtMzYxOTg_bc9cd1f1-27bb-44bb-81e4-1370b7989cd4">165,724</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjQtNi0xLTEtMzYxOTg_e89c58e1-0fad-4ae2-b1cb-56d266426251">800</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net income</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjUtMi0xLTEtMzYxOTg_430e13eb-a128-4513-a53e-d2cb324cfb2c">41,010</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjUtNC0xLTEtMzYxOTg_d0ed98ee-b148-4ade-b58a-23c5d2c1dc4e">238,378</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjUtNi0xLTEtMzYxOTg_cf03a29d-9388-4983-ae23-0625edeb4c49">33,484</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net income per common share:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Basic</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjctMi0xLTEtMzYxOTg_f71cece1-69c7-4c40-aa3c-4838f8e946c4">0.63</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjctNC0xLTEtMzYxOTg_2d809c8f-ed2a-47e8-bdff-d2d45f28b0cc">3.77</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjctNi0xLTEtMzYxOTg_93e53e05-42ba-4d1f-8f03-d1f74ecc6916">0.57</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Diluted</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjgtMi0xLTEtMzYxOTg_ad37b260-5315-4208-8c1d-d4f18d20f4b7">0.60</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjgtNC0xLTEtMzYxOTg_5bff29d7-d33e-48bc-8f5b-00cda3e22110">3.51</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjgtNi0xLTEtMzYxOTg_93dd695e-5e37-4d9e-abd1-91660ae8d9d1">0.54</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Weighted-average number of shares used to compute net income per common share:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Basic</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzAtMi0xLTEtMzYxOTg_c883f4cd-d316-4667-a423-d97948538d41">65,058</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzAtNC0xLTEtMzYxOTg_96eb1476-d398-4248-a651-1c52088df4ca">63,277</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzAtNi0xLTEtMzYxOTg_ce6ac25b-d28a-4bd9-bcbb-78a14c5c30af">59,074</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Diluted</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzEtMi0xLTEtMzYxOTg_15ec62e3-4f93-465e-b41e-a772f07f67df">68,911</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzEtNC0xLTEtMzYxOTg_1340c32d-350e-4a05-9678-4c622b460785">67,856</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzEtNi0xLTEtMzYxOTg_b522f9b8-1e02-4f70-8bbc-65dc193f10f0">61,998</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:12pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net income</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzMtMi0xLTEtMzYxOTg_b7d71868-4ec5-432f-bd8b-9d931b09517c">41,010</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzMtNC0xLTEtMzYxOTg_909d3210-04eb-4545-bd7d-c7dff8f9a763">238,378</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzMtNi0xLTEtMzYxOTg_13979068-ad92-4497-8db7-8d8cabcd63e1">33,484</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other comprehensive income (loss), net of tax:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Unrealized loss on available-for-sale marketable securities, net</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzctMi0xLTEtMzYxOTg_ec4fa937-9375-48fd-83eb-71345795b18f">1,521</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzctNC0xLTEtMzYxOTg_61f32544-8d92-4e70-b4a0-f328b7b405dd">179</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzctNi0xLTEtMzYxOTg_1482d684-3a7f-4da2-ba3a-303a50552a4e">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign currency translation adjustments, net</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzgtMi0xLTEtMzYxOTg_cb918c74-dfd0-4926-9138-96f1102f0a5e">632</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzgtNC0xLTEtMzYxOTg_4771ddc5-b8d7-424c-9ccc-9475305db6b7">50</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzgtNi0xLTEtMzYxOTg_52091167-b9bd-4000-8a53-05e74772c5ec">663</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 37pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total other comprehensive income (loss), net of tax</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzktMi0xLTEtMzYxOTg_318633c9-7153-4f02-820d-65676b7293c3">2,153</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzktNC0xLTEtMzYxOTg_d775c77b-dc54-4a27-943a-2e1c0acb82d7">129</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzktNi0xLTEtMzYxOTg_76b9c673-30fe-4c74-9668-65a236a6c320">663</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Comprehensive income</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:ComprehensiveIncomeNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNDAtMi0xLTEtMzYxOTg_c8bd61de-0833-4bc5-b505-2c354836c7d2">38,857</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:ComprehensiveIncomeNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNDAtNC0xLTEtMzYxOTg_d1b37042-39c3-4d0b-a46f-71fcb6488736">238,249</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:ComprehensiveIncomeNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNDAtNi0xLTEtMzYxOTg_359fec31-295d-46dc-aa52-a2751f160771">34,147</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div><div style="text-align:center"><span><br/></span></div><div style="margin-top:12pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">See accompanying notes to consolidated financial statements.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">38</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_73"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">CALIX, INC.</span></div><div style="margin-top:9pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">CONSOLIDATED STATEMENTS OF STOCKHOLDERS&#8217; EQUITY</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">(In thousands)</span></div><div style="text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:26.279%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.971%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:5.195%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.971%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.367%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.971%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:7.831%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.971%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.198%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.971%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.588%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.971%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.659%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.971%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.886%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Accumulated</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Additional</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Other</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Common Stock</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Paid-in</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Comprehensive</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Accumulated</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Treasury</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Stockholders&#8217;</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Shares</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Amount</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Capital</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Loss</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Deficit</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Stock</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Equity</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Balance as of December&#160;31, 2019</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="ie82c4a028e2f46f49e00eb16a6221418_I20191231" decimals="-3" name="us-gaap:CommonStockSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC0yLTEtMS0zNjE5OA_9c5e4c8a-68c6-4404-95df-a45dc653f43c">56,448</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie82c4a028e2f46f49e00eb16a6221418_I20191231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC00LTEtMS0zNjE5OA_dbdb909a-4dc0-49d2-b9c6-b6293b0b7a2e">1,545</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c590b88b1f64a2a9a73b5cdd3ac6d16_I20191231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC02LTEtMS0zNjE5OA_13ec39b5-9947-46ce-90af-4761834ece54">895,899</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i1381a46e2faf489e8372f8f632cfa082_I20191231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC04LTEtMS0zNjE5OA_0d9c67f3-8a13-4c5e-b097-419e5b4e9ac2">854</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3c40cef6156346cb9dfc20f4aa283283_I20191231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC0xMC0xLTEtMzYxOTg_e12065e0-3973-4abb-be91-c8b3b4a813aa">702,576</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i221678b32f244027820fdddd22d493cd_I20191231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC0xMi0xLTEtMzYxOTg_15bea499-7542-43f8-a40a-08b17c454881">39,986</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ibe3ffb6b029948b89bd038665fa57d44_I20191231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC0xNC0xLTEtMzYxOTg_bd44ec31-35a9-4a45-a817-ffb87af96b8a">154,028</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Stock-based compensation</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i62dee52382d14e1f9e489331c0ab3f10_D20200101-20201231" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNS02LTEtMS0zNjE5OA_1b6666c8-1e83-4f0f-9a2c-ea7176ce259a">13,960</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNS0xNC0xLTEtMzYxOTg_ea8fd415-995b-4a30-804b-9105c74631cd">13,960</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Issuance of common stock under equity incentive plans, net of forfeitures</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNi0yLTEtMS0zNjE5OA_4f07ea59-e3ca-4cee-9ed6-37796e8c21d9">2,454</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNi00LTEtMS0zNjE5OA_9f71183c-cb74-4609-9d01-6a45b52d5409">60</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i62dee52382d14e1f9e489331c0ab3f10_D20200101-20201231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNi02LTEtMS0zNjE5OA_6edc14e6-413b-498b-a309-945a8a480078">18,067</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNi0xNC0xLTEtMzYxOTg_84b1348e-2916-46b7-9232-394b025bc1f2">18,127</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Issuance of common stock in connection with public offering, net of expenses</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodSharesNewIssues" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy0yLTEtMS0zNjcxOA_1de58878-9e1d-4060-8c68-9e59b2e7e6c6">3,220</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueNewIssues" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy00LTEtMS0zNjcxOA_165d6276-3d15-496b-a8da-b9c9c340ef58">82</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i62dee52382d14e1f9e489331c0ab3f10_D20200101-20201231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueNewIssues" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy02LTEtMS0zNjcxOA_e2873cf2-3184-4c6b-b519-e155406a47ad">59,981</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueNewIssues" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy0xNC0xLTEtMzk2MjM_c58cea93-f79f-4b6b-95d4-eb4ccb46a5cd">60,063</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Treasury stock retirement</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC00LTEtMS0zNjcxOA_8be1b54a-83c4-4796-ae5f-646c6f927fa2">134</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i62dee52382d14e1f9e489331c0ab3f10_D20200101-20201231" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC02LTEtMS0zNjcxOA_65cabe81-268f-4bf9-95d4-2980953c89fc">39,852</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i7643f564c7844d13b40e6df62ba9ce35_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC0xMi0xLTEtMzY3MTg_dc6bfa71-9e72-49a6-bee3-c5b207ee9fde">39,986</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC0xNC0xLTEtMzk2MjM_0638cf78-211d-4446-bdd1-3565d46fd14b">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Net income</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1103780cf7bc45888c71a420256ec31e_D20200101-20201231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy0xMC0xLTEtMzYxOTg_15d083cb-5501-4a06-a9ad-516a905a40ef">33,484</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy0xNC0xLTEtMzYxOTg_c005327b-c3b5-40aa-84fb-095422cd8a84">33,484</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Other comprehensive income</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ieb0737a6b805496eb64c267495cdc455_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC04LTEtMS0zNjE5OA_393d18bd-f89e-4816-b9f8-860a2809995e">663</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC0xNC0xLTEtMzYxOTg_ac968c86-46f1-4f39-8aad-01e1ea4ce0aa">663</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Balance as of December&#160;31, 2020</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i5b9a216ba92f4662a6c5e29e4660d201_I20201231" decimals="-3" name="us-gaap:CommonStockSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS0yLTEtMS0zNjE5OA_0d15810e-5c11-4663-b323-5b68546b0b31">62,122</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5b9a216ba92f4662a6c5e29e4660d201_I20201231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS00LTEtMS0zNjE5OA_687fecf1-c714-492f-8986-ef7dec22d24e">1,553</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2b2de5dc230f469ebf57510dcb995ef8_I20201231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS02LTEtMS0zNjE5OA_a9e0e002-cc12-45a3-b664-3d635831a527">948,055</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i70828112df2e4dc0aacf44aeade1a12c_I20201231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS04LTEtMS0zNjE5OA_8f9b5fc0-7fc0-494b-94a6-09ddb8a16d8e">191</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="id00d493640324cd0b73797ced1093269_I20201231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS0xMC0xLTEtMzYxOTg_dad957e2-2a5d-4afc-afb3-ac09f4dc6222">669,092</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic512b19e711643f59c98f75953b49777_I20201231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS0xMi0xLTEtMzYxOTg_c85d0e08-38e2-4dd4-83a0-97eba2bfcafe">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS0xNC0xLTEtMzYxOTg_7bda2114-4cff-4220-b2ed-f31576f73122">280,325</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Stock-based compensation</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ifc02f355b98046449ab7a198a475e208_D20210101-20211231" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTAtNi0xLTEtMzYxOTg_53febdc7-98ed-4628-9629-521b9ccb14db">24,230</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTAtMTQtMS0xLTM2MTk4_53512420-0e1f-4aa1-912f-98a8883bf422">24,230</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Issuance of common stock under equity incentive plans, net of forfeitures</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="iced057490ecb40f8af711b91b2a3800d_D20210101-20211231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTEtMi0xLTEtMzYxOTg_0cc419de-a035-456e-b657-e0ea0b1bf1a2">2,152</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iced057490ecb40f8af711b91b2a3800d_D20210101-20211231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTEtNC0xLTEtMzYxOTg_d3a69544-e48e-47aa-b4a4-a81b82cd2702">54</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ifc02f355b98046449ab7a198a475e208_D20210101-20211231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTEtNi0xLTEtMzYxOTg_31f7a500-6894-4c29-a891-313cc7965bcf">25,570</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTEtMTQtMS0xLTM2MTk4_0a64601a-58c8-49ca-a00d-b85dda879cb2">25,624</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Net income</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i338d4f0ba4c9446fa367007416d30e0e_D20210101-20211231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTQtMTAtMS0xLTM2MTk4_dcc1b6de-f185-4f70-a806-b9503c4c4a4d">238,378</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTQtMTQtMS0xLTM2MTk4_c442cca2-aad9-4793-99d3-da5dc66b8528">238,378</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Other comprehensive loss</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i00b2f6ea6d574881a414d40c48f4b09f_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTUtOC0xLTEtMzYxOTg_1d5269e0-68ea-45b0-86f3-e55059825c88">129</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTUtMTQtMS0xLTM2MTk4_69eeb721-7610-4463-911d-8bfc05a51574">129</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Balance as of December&#160;31, 2021</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="if9d416b760f04d82b7305c51cd60f965_I20211231" decimals="-3" name="us-gaap:CommonStockSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtMi0xLTEtMzYxOTg_d02bdb5f-fa3a-41d1-99e7-37998ef82535">64,274</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if9d416b760f04d82b7305c51cd60f965_I20211231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtNC0xLTEtMzYxOTg_b6a90e53-d13d-4e44-a843-62abfb86f1b8">1,607</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6558c3e05bc14f9787f4c77c4cbf02da_I20211231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtNi0xLTEtMzYxOTg_b223fa03-4aee-4c79-979d-b691758eb79b">997,855</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i7b351fe8ba1143289315d78b03323c97_I20211231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtOC0xLTEtMzYxOTg_21a3e11b-de93-4ea0-a2c0-d77b40475737">320</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i62e8d30d767641039a22982dd9da4de2_I20211231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtMTAtMS0xLTM2MTk4_1378e759-0b34-4c2d-919f-e8575d5d2b61">430,714</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib57a8227187a4016b87def7464807008_I20211231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtMTItMS0xLTM2MTk4_f4a45b45-0665-455c-91c4-4038d8132728">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtMTQtMS0xLTM2MTk4_26bbd1c6-7499-4693-a4aa-e56675d700c9">568,428</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Stock-based compensation</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8f14ec41ce5b42bdb7290c9b661e7b40_D20220101-20221231" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTctNi0xLTEtMzYxOTg_c2ecd980-0e33-4e25-aaa4-4c18a277f835">44,826</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTctMTQtMS0xLTM2MTk4_57d6013e-baf7-437b-830e-cfd246cc1819">44,826</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Issuance of common stock under equity incentive plans, net of forfeitures</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i0e63d4cd16584e67be8964684fea4f2b_D20220101-20221231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTgtMi0xLTEtMzYxOTg_b86dc833-5e91-4f5f-aa70-bbb0f723a09b">1,461</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0e63d4cd16584e67be8964684fea4f2b_D20220101-20221231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTgtNC0xLTEtMzYxOTg_e8dc38f8-c2bd-41ed-927c-695418d8afc9">37</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8f14ec41ce5b42bdb7290c9b661e7b40_D20220101-20221231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTgtNi0xLTEtMzYxOTg_0c0dd9d0-a10a-4958-bc74-48f74f61f1e4">27,419</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTgtMTQtMS0xLTM2MTk4_0736402e-1437-48ab-aeec-92ad752480cf">27,456</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Net income</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i99e1660b325840b39b58d880b4cb6c3a_D20220101-20221231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTktMTAtMS0xLTM2MTk4_60eb70e8-f497-4785-8d39-88fba95a7396">41,010</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTktMTQtMS0xLTM2MTk4_0475efb7-57ea-4dda-99d6-f73f14da88a5">41,010</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Other comprehensive loss</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="iae919b947c1f4fd8a9545cb83d022877_D20220101-20221231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjAtOC0xLTEtMzYxOTg_5d3f9a1e-a514-4452-a7b4-a2b1313ba121">2,153</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjAtMTQtMS0xLTM2MTk4_c56dbf53-3469-42a8-b368-1287a0ae0d7b">2,153</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Balance as of December&#160;31, 2022</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="ibf694ca5c1784abd900378a9d5cac4c9_I20221231" decimals="-3" name="us-gaap:CommonStockSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtMi0xLTEtMzYxOTg_2476adcc-dc0e-4030-b76d-56f5c83415e3">65,735</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ibf694ca5c1784abd900378a9d5cac4c9_I20221231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtNC0xLTEtMzYxOTg_a4a79e81-dc5a-4760-a8a7-a24593c99524">1,644</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1b11ec9c87f647eda542f47bd568cae6_I20221231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtNi0xLTEtMzYxOTg_52e53f9d-bf6e-48eb-accf-0b53fa6d3088">1,070,100</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i94330ed0d9cb44ad89b11f0416a40439_I20221231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtOC0xLTEtMzYxOTg_97dbe019-422c-4285-8c52-d5b12f5a16d2">2,473</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i2fc9c021dca34b31add79cf37c24ff19_I20221231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtMTAtMS0xLTM2MTk4_1d841f55-7085-43f9-a4db-41e74de22c87">389,704</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib9005996b5004e2ea8204ab8956288bf_I20221231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtMTItMS0xLTM2MTk4_e11149b7-e608-41e9-8334-e17ad0b4a154">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtMTQtMS0xLTM2MTk4_973b8fef-284f-4d8f-8d83-2de953258666">679,567</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="text-align:center"><span><br/></span></div><div style="margin-top:12pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">See accompanying notes to consolidated financial statements.</span></div><div><span><br/></span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">39</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_76"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">CALIX, INC.</span></div><div style="margin-top:9pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">CONSOLIDATED STATEMENTS OF CASH FLOWS</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">(In thousands)</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.122%"><tr><td style="width:1.0%"></td><td style="width:60.846%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.422%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.961%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.422%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.961%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.422%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.966%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Operating activities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net income</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMy0yLTEtMS0zNjE5OA_374fc9b9-5f76-480b-b50c-debe5c9d410f">41,010</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMy00LTEtMS0zNjE5OA_995443b1-d5d5-4c4d-b4ba-2c393a9f7988">238,378</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMy02LTEtMS0zNjE5OA_8ac9de10-36b3-4592-9c2f-fb69994b0139">33,484</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Adjustments to reconcile net income to net cash provided by operating activities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock-based compensation</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:ShareBasedCompensation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNS0yLTEtMS0zNjE5OA_1a7214e6-0cdc-4a0b-a592-3b7fb7b1d8e4">44,826</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:ShareBasedCompensation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNS00LTEtMS0zNjE5OA_49323b01-c25e-40d7-802f-4f1871b1d2fc">24,230</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:ShareBasedCompensation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNS02LTEtMS0zNjE5OA_4030ddac-fa7e-4c0a-a138-a69275b94e75">13,960</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Depreciation and amortization</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:Depreciation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNi0yLTEtMS0zNjE5OA_cde8cadd-d7ae-45c3-affa-29bc4558d4ba">14,315</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:Depreciation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNi00LTEtMS0zNjE5OA_06c01a6e-9f90-459e-a9a9-805ef66c9476">15,012</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:Depreciation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNi02LTEtMS0zNjE5OA_ba4a9d21-da0b-429d-aa27-a78c8dae7b6c">13,718</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred income taxes</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:DeferredIncomeTaxesAndTaxCredits" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNy0yLTEtMS0zNjE5OA_6670ca3d-5141-4f90-9149-debc85e19141">1,932</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:DeferredIncomeTaxesAndTaxCredits" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNy00LTEtMS0zNjE5OA_34d444d2-478e-4ec2-a9e0-353e6240e60c">168,426</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:DeferredIncomeTaxesAndTaxCredits" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNy02LTEtMS0zNjE5OA_d184797d-352e-4448-9e42-3b2b9696b454">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net accretion of available-for-sale securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC0yLTEtMS0zNzQwNg_e6f9e704-3889-43c4-8cbf-0cdcfdd68768">1,146</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC00LTEtMS0zNzQwNg_c866bb87-6c7e-4ca6-a1df-a6c8270eff9f">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC02LTEtMS0zNzQwNg_087a59fb-92b6-4325-a2f2-aefa07910d03">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Asset retirements and write-downs</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:GainLossOnDispositionOfAssets" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC0yLTEtMS0zNjE5OA_b80cc51b-d87a-4bab-bb25-9a3d3788928c">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:GainLossOnDispositionOfAssets" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC00LTEtMS0zNjE5OA_67892efb-d2eb-4f10-948a-78ca97a7e480">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:GainLossOnDispositionOfAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC02LTEtMS0zNjE5OA_57d86dcd-3fc4-40dc-95f1-014fc0aaab93">3,914</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Changes in operating assets and liabilities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accounts receivable, net</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsReceivable" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTAtMi0xLTEtMzYxOTg_f1d59ca7-6afc-4a61-b972-6429c64c7d16">8,585</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsReceivable" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTAtNC0xLTEtMzYxOTg_8192cbf2-2f5e-437a-af40-14542226cfc4">15,800</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsReceivable" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTAtNi0xLTEtMzYxOTg_11503d39-eaba-4f2c-b08f-7bdd209c3414">22,910</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Inventory</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:IncreaseDecreaseInInventories" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTEtMi0xLTEtMzYxOTg_97cf7d31-64f4-4230-80e8-832ed6667d82">60,280</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:IncreaseDecreaseInInventories" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTEtNC0xLTEtMzYxOTg_a5db9ced-399e-46c9-a565-d89738a7f4e3">36,612</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:IncreaseDecreaseInInventories" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTEtNi0xLTEtMzYxOTg_32d91333-49b6-443f-a4da-c590e5e12fa8">12,116</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Prepaid expenses and other assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTItMi0xLTEtMzYxOTg_b2549220-2c20-4168-8c0e-ce69b19494c1">38,359</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTItNC0xLTEtMzYxOTg_83f7688c-282c-403e-98fd-d694a125a02a">27,074</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTItNi0xLTEtMzYxOTg_cfa8d802-2f2d-427a-8248-258900890da6">773</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accounts payable</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsPayable" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTMtMi0xLTEtMzYxOTg_2cc582b2-f688-4256-8f92-984241089669">12,111</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsPayable" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTMtNC0xLTEtMzYxOTg_1715cd15-dc5c-4048-b973-a25443ffc21a">16,025</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsPayable" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTMtNi0xLTEtMzYxOTg_baa06cf9-771f-47f8-926c-22a0bffcc207">2,190</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accrued liabilities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccruedLiabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTQtMi0xLTEtMzYxOTg_4141405f-5d16-493d-819e-07c0abe5611b">20,919</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccruedLiabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTQtNC0xLTEtMzYxOTg_2c04f829-577f-4fd9-884a-cedac97b25a0">3,273</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccruedLiabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTQtNi0xLTEtMzYxOTg_83cab1e2-6177-4dfc-92c0-2ae318d3121c">11,922</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred revenue</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:IncreaseDecreaseInDeferredRevenue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTUtMi0xLTEtMzYxOTg_6760df14-99c2-4326-aa1f-a67746bd6074">9,118</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:IncreaseDecreaseInDeferredRevenue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTUtNC0xLTEtMzYxOTg_1b84291e-6674-4290-9e9a-0d8d817a9e1b">10,400</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:IncreaseDecreaseInDeferredRevenue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTUtNi0xLTEtMzYxOTg_c97e7d2d-4898-49dd-811d-d19c94fc77a2">3,596</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other long-term liabilities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" sign="-" name="us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTYtMi0xLTEtMzYxOTg_aaeace7a-823e-4368-a3cf-de1c9d76c4e2">8,678</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTYtNC0xLTEtMzYxOTg_a6b13a19-12e5-4af4-a992-9c9882617e0d">2,613</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTYtNi0xLTEtMzYxOTg_be02ad42-7ba1-4850-8dbb-cb6a1346fb16">2,878</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 48.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net cash provided by operating activities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTctMi0xLTEtMzYxOTg_8d62e837-54bc-427c-af5b-40e89295d346">27,183</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTctNC0xLTEtMzYxOTg_fe6650a9-e5c2-429a-a435-34c0224a9792">56,793</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTctNi0xLTEtMzYxOTg_b5345dcd-81f6-4548-9ca9-3c2a4083ef41">51,409</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Investing activities:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Purchases of property and equipment</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTktMi0xLTEtMzYxOTg_612152f4-befa-4816-9950-00cb0f70edf4">14,067</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTktNC0xLTEtMzYxOTg_9f625507-5ef6-4aa6-951c-25cd71cf15fd">10,463</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTktNi0xLTEtMzYxOTg_bbb6fe79-2d86-4bcf-869f-e0bcaefee7e3">7,819</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Purchases of marketable securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:PaymentsToAcquireMarketableSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjAtMi0xLTEtMzYxOTg_051d20b3-1265-4124-8626-afc963090d66">191,403</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:PaymentsToAcquireMarketableSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjAtNC0xLTEtMzYxOTg_7916e84a-2fe2-43ef-aacb-0d20b31b7c14">298,092</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:PaymentsToAcquireMarketableSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjAtNi0xLTEtMzYxOTg_5a9ae3d6-6426-4a49-ab49-de505ee98a9a">72,982</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Maturities of marketable securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjItMi0xLTEtMzYxOTg_0a01cb6f-91c4-4ce0-89ee-67f86faf132b">181,388</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjItNC0xLTEtMzYxOTg_f5cebf24-5196-4a12-8934-521d1fd70ad7">197,894</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjItNi0xLTEtMzYxOTg_58420d25-0f08-4242-8fa9-a04c73064ea1">20,000</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 48.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net cash used in investing activities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" sign="-" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjMtMi0xLTEtMzYxOTg_1cfba3c1-363f-49c5-a891-d6605d1d8cca">24,082</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjMtNC0xLTEtMzYxOTg_7ec76ffe-46f6-4193-b035-27952fdd0892">110,661</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjMtNi0xLTEtMzYxOTg_dbcfe9bc-be48-4dde-87ab-0fe0e9ef95a9">60,801</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Financing activities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Proceeds from common stock issuances related to employee benefit plans</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:ProceedsFromStockOptionsExercised" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjUtMi0xLTEtMzYxOTg_9c9e5e14-9609-47f9-b5fb-d76b1b98d107">27,456</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:ProceedsFromStockOptionsExercised" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjUtNC0xLTEtMzYxOTg_8697ea18-b4e6-4db9-b42a-e6e15d526150">25,624</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:ProceedsFromStockOptionsExercised" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjUtNi0xLTEtMzYxOTg_4356cc04-28df-44b5-a382-3e43fe7d804d">18,127</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Payments related to financing arrangements</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="calx:PaymentsForFinancingArrangements" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjYtMi0xLTEtMzYxOTg_986c6cdb-b8da-4e8e-9919-6440c36fe75c">2,393</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="calx:PaymentsForFinancingArrangements" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjYtNC0xLTEtMzYxOTg_707c30a3-9274-4775-be3f-ceb78faa2a0e">1,241</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="calx:PaymentsForFinancingArrangements" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjYtNi0xLTEtMzYxOTg_d9b52108-8036-4ec4-a01c-2e77276ed8f6">5,758</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Proceeds from the sale of common stock in connection with public offering, net of expenses</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:ProceedsFromIssuanceOfCommonStock" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjctMi0xLTEtMzYxOTg_d11f7215-9c63-4abf-868d-ab637be3fc4e">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:ProceedsFromIssuanceOfCommonStock" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjctNC0xLTEtMzYxOTg_3e69de40-9244-4b7a-8fc5-5111cf86fc7e">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:ProceedsFromIssuanceOfCommonStock" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjctNi0xLTEtMzYxOTg_807776fe-d879-490d-a32d-a2611ea483f5">60,063</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Proceeds from line of credit</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:ProceedsFromLinesOfCredit" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjgtMi0xLTEtMzYxOTg_15e8e3f7-e8d3-441c-bf0e-e109af16b386">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:ProceedsFromLinesOfCredit" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjgtNC0xLTEtMzYxOTg_449a09cb-611a-4839-ab4e-747dbe34370b">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:ProceedsFromLinesOfCredit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjgtNi0xLTEtMzYxOTg_8ee21806-e04b-4eab-b71c-2d6193507382">30,000</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Payments related to the line of credit</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:RepaymentsOfLinesOfCredit" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjktMi0xLTEtMzYxOTg_82bb49b5-336e-45a7-b3fb-986132df7fa0">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:RepaymentsOfLinesOfCredit" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjktNC0xLTEtMzYxOTg_66c83405-84d2-4bad-94f9-231c6b9b28d2">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:RepaymentsOfLinesOfCredit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjktNi0xLTEtMzYxOTg_6dd48874-4e3e-4ee0-92b3-1569ae93d38d">60,285</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 48.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net cash provided by financing activities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzAtMi0xLTEtMzYxOTg_ececc9c4-2734-4b56-b417-54ae9828c75d">25,063</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzAtNC0xLTEtMzYxOTg_d74ae577-b3b5-4c46-865e-9e10a8ccb7b2">24,383</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzAtNi0xLTEtMzYxOTg_4f852aea-0478-4da8-bfff-c20434eb9159">42,147</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Effect of exchange rate changes on cash and cash equivalents</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" sign="-" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzEtMi0xLTEtMzYxOTg_9e4d48c8-1452-4708-9784-deafd3440184">424</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzEtNC0xLTEtMzYxOTg_6ee1f480-43d5-4416-b8b6-10d3b0357599">11</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzEtNi0xLTEtMzYxOTg_b1ea4636-3687-49d0-9549-6493981cc7fa">595</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net increase (decrease) in cash and cash equivalents</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzItMi0xLTEtMzYxOTg_91298359-b980-4059-9389-ae6bc489db9e">27,740</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzItNC0xLTEtMzYxOTg_2cbf96da-a111-4172-9f03-b16a94e1d5a3">29,474</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzItNi0xLTEtMzYxOTg_34085856-a05a-49da-a3d4-ebf6ec00bb7b">33,350</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash and cash equivalents at beginning of year</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzMtMi0xLTEtMzYxOTg_7076c963-a413-4d55-88a7-63e3621c79d6">51,333</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzMtNC0xLTEtMzYxOTg_e7b015de-0ea6-4f8b-801a-19007f8d8900">80,807</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ibe3ffb6b029948b89bd038665fa57d44_I20191231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzMtNi0xLTEtMzYxOTg_22900dcd-b449-4103-b7fe-74f16f12bc9b">47,457</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash and cash equivalents at end of year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzQtMi0xLTEtMzYxOTg_209cb8bb-262d-4ae0-ae37-379e517f6dc4">79,073</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzQtNC0xLTEtMzYxOTg_13182c9f-38a6-4734-8916-e91c4448709c">51,333</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzQtNi0xLTEtMzYxOTg_d1050468-e682-47b9-b68c-1e464ea6a187">80,807</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Supplemental disclosures of cash flow information:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Interest paid</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:InterestPaidNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzYtMi0xLTEtMzYxOTg_ff3b118d-c2bb-42b6-8a1e-37307d790f66">577</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:InterestPaidNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzYtNC0xLTEtMzYxOTg_6a399296-ecf0-42c6-b835-38f3af617671">631</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:InterestPaidNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzYtNi0xLTEtMzYxOTg_93a9c5c7-40a3-4891-b201-a4b722d81d19">1,686</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Income taxes paid</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:IncomeTaxesPaidNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzctMi0xLTEtMzYxOTg_c5d68f42-2a90-4262-b08c-94341b1fb3df">9,607</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:IncomeTaxesPaidNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzctNC0xLTEtMzYxOTg_ef943509-0deb-418c-9df2-68cdb1945d4a">5,197</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:IncomeTaxesPaidNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzctNi0xLTEtMzYxOTg_19e4b0e1-e110-43b8-af97-974cf2a95adf">751</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Non-cash investing activities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Changes in accounts payable and accrued liabilities related to purchases of property and equipment</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="calx:ChangeInCapitalExpendituresIncurredButNotYetPaid" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzktMi0xLTEtMzYxOTg_96138e07-9469-41e2-bf32-cc3cdac3dc47">586</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="calx:ChangeInCapitalExpendituresIncurredButNotYetPaid" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzktNC0xLTEtMzYxOTg_4e369818-8133-4992-9f17-9b524416190e">194</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" sign="-" name="calx:ChangeInCapitalExpendituresIncurredButNotYetPaid" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzktNi0xLTEtMzYxOTg_6311b8c9-c989-438b-80bc-ba5bdbe6c179">597</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="text-align:center"><span><br/></span></div><div style="margin-top:12pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">See accompanying notes to consolidated financial statements.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">40</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_79"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">CALIX, INC.</span></div><div style="margin-top:9pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_82"></div><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">1.  <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:BusinessDescriptionAndAccountingPoliciesTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYwOTk_ced746a3-36a3-4f18-914d-d68371cd6ed8" continuedAt="i71aa8951d52c4933b34628d8a06c6f2b" escape="true">Description of Business and Significant Accounting Policies</ix:nonNumeric></span></div><ix:continuation id="i71aa8951d52c4933b34628d8a06c6f2b" continuedAt="id08d0c7806314768a97ba9fefab7a95e"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Company</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Calix, Inc. (together with its subsidiaries, &#8220;Calix&#8221; or the &#8220;Company&#8221;) was incorporated in August 1999 and is a Delaware corporation. The Company is the leading global provider of a platform (cloud, software and systems) and managed services that focus on the subscriber-facing network, the portion of the network that governs available bandwidth and determines the range and quality of services that can be offered to subscribers. This platform and managed services enable broadband service providers (&#8220;BSPs&#8221;) of all sizes to innovate and transform their businesses. The Company&#8217;s BSP customers are empowered to utilize real-time data and insights from the Calix platform to simplify their businesses and deliver experiences that excite their subscribers. These insights enable BSPs to grow their businesses through increased subscriber acquisition, loyalty and revenue, thereby increasing the value of their businesses and contributions to their communities.</span></div><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:BasisOfAccountingPolicyPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxODQ_65aa2116-a6d8-4ea6-87ef-995c0c7a94be" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Basis of Presentation and Accounting Guidance</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The accompanying consolidated financial statements have been prepared in accordance with the requirements of the U.S. Securities and Exchange Commission (&#8220;SEC&#8221;) and U.S. generally accepted accounting principles (&#8220;GAAP&#8221;). All significant intercompany balances and transactions have been eliminated in consolidation. Any reference in these notes to applicable accounting guidance is meant to refer to the authoritative U.S. GAAP as found in the Financial Accounting Standards Board (&#8220;FASB&#8221;) Accounting Standards Codification (&#8220;ASC&#8221;).</span></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:UseOfEstimates" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMTM_f55d930a-718a-43e5-97ee-846f188411cb" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Use of Estimates</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The preparation of financial statements is in conformity with U.S. GAAP, which requires management to make estimates and assumptions that affect the amounts reported in the consolidated financial statements and accompanying notes. For the Company, these estimates include, but are not limited to: allowances for doubtful accounts and sales returns, excess and obsolete inventory, allowances for obligations to its contract manufacturers, valuation of stock-based compensation, useful lives assigned to long-lived assets, standard and extended warranty costs, realizability of deferred tax assets and uncertain tax positions and contingencies. Actual results could differ from those estimates, and such differences could be material to the Company&#8217;s financial position and results of operations.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:RevenueFromContractWithCustomerPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYyMDA_244a0ca6-2336-4e3b-843e-9bcf4f232872" continuedAt="ia3d8ce3497e644d48bf513895537b988" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Revenue Recognition</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue is recognized when a performance obligation is satisfied, which occurs 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 to in exchange for those goods or services. Revenue from sales of access and premises systems is recognized when control is transferred to the customer, which is generally when the products are shipped. Revenue from software platform licenses, which provides the customer with a right to use the software as it exists, is generally recognized upfront when made available to the customer. Revenue from cloud-based software subscriptions, customer support, maintenance, extended warranty subscriptions and managed services is generally recognized ratably over the contract term. Revenue from professional services and training is recognized as the services are delivered.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A performance obligation is a promise in a contract to transfer a distinct good or service to the customer and is the unit of account. A contract&#8217;s transaction price is allocated to each distinct performance obligation and recognized as revenue when, or as, the performance obligation is satisfied. The Company&#8217;s hardware products contain both software and non-software components that function together to deliver the products&#8217; essential functionality and therefore constitutes a single performance obligation as the promise to transfer the individual software and non-software components is not separately identifiable and, therefore, not distinct. Cloud-based software subscriptions can include multi-year agreements with a fixed annual fee for a minimum committed usage level. To the extent that minimum committed usage level each year varies, the Company has concluded that each year represents a distinct stand-ready performance obligation and the transaction price allocated to each performance obligation is recognized as revenue ratably over each annual period. The Company&#8217;s contracts may include multiple performance obligations. For such arrangements, the Company allocates the contract&#8217;s transaction price to each performance obligation using the relative stand-alone selling price of each distinct good or service in the contract. The Company generally determines stand-alone selling prices based on the prices charged to customers or its best estimate of stand-alone selling price. The Company&#8217;s estimate of stand-alone selling price is established considering multiple factors including, but not limited to, geographies, market conditions, competitive landscape, internal costs, gross margin objectives, characteristics of targeted customers and pricing practices. The determination of estimated stand-alone selling price is made through consultation with and formal approval by management, taking into consideration the go-to-market strategy.</span></div></ix:nonNumeric></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">41</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><ix:continuation id="id08d0c7806314768a97ba9fefab7a95e" continuedAt="i6b06541346844e04b7af24571c44056b"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:CostOfSalesPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxNDc_a76970ba-3dc1-4fd7-9b43-5fe4ea037de5" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Cost of Revenue</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cost of revenue consists primarily of finished goods inventory purchased from the Company&#8217;s contract manufacturers, payroll and related expenses associated with managing the relationships with contract manufacturers, depreciation of manufacturing test equipment, warranty and retrofit costs, excess and obsolete inventory costs, allowances for obligations to its contract manufacturers, shipping charges and amortization of certain intangible assets. It also includes contractor and other costs of services incurred directly related to the delivery of services to customers.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:StandardProductWarrantyPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxODg_2e6ab482-f0a2-453f-9cab-fbc05983fe04" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Warranty and Retrofit</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company offers limited warranties for its hardware products for a period of <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1NQ_52e60d60-98c1-49fa-aeb6-aa5951b471ac">one</span>, <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1OQ_d86fb7cc-3137-407d-b8ce-6c28a7e598e4">three</span> or <ix:nonNumeric contextRef="ib4e76b7a0138479ebec9c577d687f1b3_D20220101-20221231" name="calx:ProductWarrantyPeriod" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk2NQ_2c9b6e62-e772-4f2a-b08d-0ea4358361b3">five years</ix:nonNumeric>, depending on the product type. The Company recognizes estimated costs related to warranty activities as a component of cost of revenue upon product shipment or upon identification of a specific product failure. Under certain circumstances, the Company also provides fixes on specifically identified performance failures for products that are outside of the standard warranty period and recognizes estimated costs related to retrofit activities as a component of cost of revenue upon identification of such product failures. The Company recognizes estimated warranty and retrofit costs when it is probable that a liability has been incurred and the amount of loss is reasonably estimable. The estimates are based upon historical and projected product failure and claim rates, historical costs incurred in correcting product failures and information available related to any specifically identified product failures. Judgment is required in estimating costs associated with warranty and retrofit activities, and the Company's estimates are limited to information available to the Company at the time of such estimates. In some cases, such as when a specific product failure is first identified or a new product is introduced, the Company may initially have limited information and limited historical failure and claim rates upon which to base its estimates, and such estimates may require revision in future periods. The recorded amount is adjusted from time to time for specifically identified warranty and retrofit exposure. Actual warranty and retrofit expenses are charged against the Company&#8217;s estimated warranty and retrofit liability when incurred. Factors that affect the Company&#8217;s warranty and retrofit liability include the number of active installed units and historical and anticipated rates of warranty and retrofit claims and cost per claim.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxNTg_949cb16d-3245-405a-9521-34140605a72e" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Stock-Based Compensation</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock-based compensation expense associated with stock options and purchase rights under the Amended and Restated Employee Stock Purchase Plan (the &#8220;ESPP&#8221;) and the Amended and Restated 2017 Nonqualified Employee Stock Purchase Plan (the &#8220;NQ ESPP&#8221;) is measured at the grant date based on the fair value of the award and is recognized, net of forfeitures, as expense over the remaining requisite service period (generally the vesting period) on a straight-line basis.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair value of stock option and employee stock purchase right under the ESPP is estimated at the grant date using the Black-Scholes option valuation model. The fair value of the employee stock purchase right under the NQ ESPP is based on closing market price of the Company&#8217;s common stock on the date of grant.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock-based compensation expense associated with performance stock options (&#8220;PSOs&#8221;) with graded vesting features and which contain both a performance and a service condition is measured based on fair value of stock options estimated at the grant date using the Black-Scholes option valuation model, and is recognized, net of forfeitures, as expense over the requisite service period using the graded vesting attribution method.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Compensation expense is only recognized if the Company has determined that it is probable that the performance condition will be met. The Company reassesses the probability of vesting at each reporting period and adjusts compensation expense based on its probability assessment.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:CommitmentsAndContingenciesPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMzc_5e9a4e76-6b6a-413c-b169-95231d2c477f" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Loss Contingencies</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">From time to time, the Company is involved in legal proceedings arising from the normal course of business activities. The Company evaluates the likelihood of an unfavorable outcome of legal proceedings to which it is a party and accrues a loss contingency when the loss is probable and reasonably estimable. Assessing legal contingencies involves significant judgment and estimates, and the outcome of litigation is inherently uncertain and subject to numerous factors outside the Company&#8217;s control. Significant judgment is required when the Company assesses the likelihood of any adverse judgments or outcomes, including the potential range of possible losses, and whether losses are probable and reasonably estimable.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Because of uncertainties related to these matters, the Company bases its estimates of whether a loss contingency is probable or reasonably possible, as well as the reasonable range of possible losses associated with each loss contingency, only on the information available at the time. As additional information becomes available, and at least quarterly, the Company reassesses the potential liability on each significant matter and may revise its estimates. These revisions could have a material impact on the Company&#8217;s business, operating results or financial condition. The actual outcome of these legal proceedings may materially differ from the Company&#8217;s estimates of potential liability, which could have a material adverse effect on the Company&#8217;s business, operating results or financial condition.</span></div></ix:nonNumeric></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">42</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><ix:continuation id="i6b06541346844e04b7af24571c44056b" continuedAt="iffabfded989548f19e9a3436b55c2fc3"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ConcentrationRiskCreditRisk" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxNjA_eef3e0d1-a7b5-4a50-9ec1-828351de2f06" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Credit Risk and Inventory Supplier Concentrations</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Financial instruments that potentially subject the Company to significant concentrations of credit risk consist primarily of cash, cash equivalents, marketable securities and accounts receivable. Cash equivalents consist of money market funds and marketable securities with a maturity at the date of purchase of ninety days or less, which are invested through financial institutions in the United States. Deposits in and investments held by these financial institutions may, at times, exceed federally insured limits. The Company has not experienced any losses in such accounts. The Company also has approximately $<ix:nonFraction unitRef="usd" contextRef="i11ca9800e83c4a9fac73cab090bae62c_I20221231" decimals="-5" name="us-gaap:Cash" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMTM1OTY_4a368c16-f801-4442-b832-bba031093e30">2.7</ix:nonFraction> million of cash held by its foreign subsidiaries in India, China and the United Kingdom. Management believes that the financial institutions that hold the Company&#8217;s cash and cash equivalents are financially sound and, accordingly, minimal credit risk exists with respect to these cash and cash equivalents.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company depends primarily on a small number of outside contract manufacturers (&#8220;CMs&#8221;) and original design manufacturers (&#8220;ODMs&#8221;) for the bulk of its finished goods inventory. The Company generally purchases its products through purchase orders with its suppliers. While the Company seeks to maintain a sufficient supply of its products, the Company&#8217;s business and results of operations could be adversely affected by a stoppage or delay in receiving such products, the receipt of defective parts, an increase in price of such products or the Company&#8217;s inability to obtain lower prices from its CMs, ODMs and other suppliers in response to competitive pressures.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:FairValueOfFinancialInstrumentsPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMDU_c28363bf-e92e-4d13-8284-946ea8a3961d" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Fair Value of Financial Instruments</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The carrying amounts of cash and cash equivalents, trade receivables, accounts payable and other accrued liabilities approximate their fair value due to their relatively short-term nature. Marketable securities are valued using quoted market prices in active markets to determine fair value.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="calx:CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxNzY_16787183-a7e2-4b5a-b60a-fbc677958861" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Cash, Cash Equivalents and Marketable Securities</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cash equivalents and marketable securities are stated at amounts that approximate fair value based on quoted market prices.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company has invested its excess cash primarily in money market funds and highly liquid marketable securities such as U.S. treasury securities, corporate debt instruments, commercial paper and U.S. government securities. The Company considers all investments with maturities of three months or less when purchased to be cash equivalents. Marketable securities represent highly liquid U.S. treasury securities, corporate debt instruments, commercial paper and U.S. government securities with maturities greater than 90 days at date of purchase. Marketable securities with maturities greater than one year are classified as current because management considers all marketable securities to be available for current operations.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s investments have been classified and accounted for as available-for-sale. Such investments are recorded at fair value and unrealized holding gains and losses are reported as a separate component of comprehensive loss in the stockholders&#8217; equity until realized. Realized gains and losses on sales of marketable securities, if any, are determined on the specific identification method and are reclassified from accumulated other comprehensive loss to results of operations as &#8220;Other income (expense), net.&#8221; Realized gains and losses were not significant for the years ended December&#160;31, 2022 and 2021, respectively.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">For the Company&#8217;s available-for-sale debt securities in an unrealized loss position, the Company determines whether a credit loss exists. In this assessment, among other factors, the Company considers the extent to which the fair value is less than the amortized cost, any changes to the rating of the security by a rating agency, and adverse conditions specifically related to the security. If factors indicate a credit loss exists, an allowance for credit loss will be recorded to &#8220;Other income (expense), net,&#8221; limited by the amount that the fair value is less than the amortized cost basis. The amount of fair value change relating to all other factors will be recognized in other comprehensive loss.</span></div></ix:nonNumeric><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">See Note 2 &#8220;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Cash, Cash Equivalents and Marketable Securities.&#8221;</span></div><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMjY_f7ab37ed-d766-4c07-b871-d92c8887e1e9" escape="true"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Allowance for Doubtful Accounts</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company maintains an allowance for doubtful accounts for expected credit losses at contract inception resulting from the inability of its customers to make required payments. The Company records a specific allowance and revises the expected loss based on an analysis of individual past-due balances. Additionally, based on historical write-offs and the Company&#8217;s collection experience, the Company records an additional allowance based on a percentage of outstanding receivables. The Company performs credit evaluations of its customers&#8217; financial condition. These evaluations require judgment and are based on a variety of factors including, but not limited to, current economic trends, payment history and a financial review of the customer. Actual collection losses may differ from management&#8217;s estimates, and such differences could be material to the Company's financial position and results of operations.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:InventoryPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMjc_34a6c53a-16f6-4c11-bde9-febc96c5d855" continuedAt="ia84b68212e0a4d3db1838bff7ba6fd61" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Inventory Valuation and Supplier Purchase Commitments</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Inventory, which primarily consists of finished goods purchased from CMs or ODMs, is stated at the lower of cost (determined by the first-in, first-out method) or market value. Inbound shipping costs and U.S. tariffs are included in cost of inventory. In </span></div></ix:nonNumeric></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">43</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><ix:continuation id="iffabfded989548f19e9a3436b55c2fc3" continuedAt="i0bbc022a9b78434d8bc9cfca29d7de98"><div style="margin-top:6pt"><ix:continuation id="ia84b68212e0a4d3db1838bff7ba6fd61"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">addition, from time to time, the Company procures component inventory primarily as a result of manufacturing discontinuation of critical components by suppliers. The Company regularly monitors inventory quantities on hand and records write-downs for excess and obsolete inventories based on the Company&#8217;s estimate of demand for its products, potential obsolescence of technology, product life cycles and whether pricing trends or forecasts indicate that the carrying value of inventory exceeds its estimated selling price. The Company also evaluates its supplier purchase commitments, which have increased significantly due to extended lead-times in the current supply chain environment, and records a liability for excess and obsolete components based on its estimated demand of our products, potential obsolescence of technology and product life cycles.</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">These factors are impacted by market and economic conditions, technology changes and new product introductions and require significant estimates that may include elements that are uncertain. Actual demand may differ from forecasted demand and may have a material effect on gross profit. If inventory is written down, a new cost basis is established that cannot be increased in future periods. Shipments from suppliers before the Company receives them are recorded as in-transit inventory when title and the significant risks and rewards of ownership have passed to the Company.</span></ix:continuation></div><ix:continuation id="ia3d8ce3497e644d48bf513895537b988" continuedAt="ie2c8adc2c5534140a228cbebc27aaab7"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Contract Costs</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company capitalizes certain sales commissions related primarily to multi-year cloud-based software subscriptions and extended warranty support contracts.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Capitalized commissions are amortized as sales and marketing expenses over the period that the related revenue is recognized, which can be up to <ix:nonNumeric contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" name="us-gaap:CapitalizedContractCostAmortizationPeriod" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjAxMTk_7539e90f-8525-40c2-aa70-2b2926f33c2c">five years</ix:nonNumeric> for extended warranty. The Company classifies the unamortized portion of deferred commissions as current or noncurrent based on the timing of when the Company expects to recognize the expense. The current and noncurrent portions of deferred commissions are included in &#8220;Prepaid expenses and other current assets&#8221; and &#8220;Other assets,&#8221; respectively, in the Company&#8217;s Consolidated Balance Sheets.</span></div></ix:continuation><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:PropertyPlantAndEquipmentPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYyMTA_c32774a8-7241-48bc-ba36-4d3159f82be5" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Property and Equipment</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property and equipment are stated at cost, less accumulated depreciation, and are depreciated using the straight-line method over the estimated useful life of each asset. Generally, computer equipment is depreciated over <ix:nonNumeric contextRef="i7ad4ad7c154840f4bae9ab60b925baa2_D20220101-20221231" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA3NTk_49b4f4b7-e707-4743-b62c-4ae2c11ccc4a">two years</ix:nonNumeric>; purchased software is depreciated over <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4MDI_2e01504e-91d5-45fd-890f-25b987875d7a">three</span> to <ix:nonNumeric contextRef="i83e79e5ca7b146d28600c379569850f6_D20220101-20221231" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4MDg_f82d4378-ca87-4317-91e6-641a1cb279e0">five years</ix:nonNumeric>; test equipment is depreciated over <ix:nonNumeric contextRef="ic399c58a2c1a45bd84aaa9618f98d9e8_D20220101-20221231" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4NDc_e707f8d0-470d-4ee8-a22b-7c8f9a529e79">three years</ix:nonNumeric>; furniture and fixtures are depreciated over <ix:nonNumeric contextRef="i0bf6d605c909425e9b0bbeda75e84492_D20220101-20221231" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4OTU_a09a2670-eebb-48fb-a281-89f79da1269b">seven years</ix:nonNumeric>; and leasehold improvements are depreciated over the shorter of the respective lease term or the estimated useful life of the asset. Maintenance and repairs are charged to expense as incurred.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMDg_adf27f2a-55a0-4fc2-bff7-d71a10d8ef6f" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Goodwill</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Goodwill was recorded as a result of the Company&#8217;s acquisitions of Occam Networks, Inc. in February 2011 and Optical Solutions, Inc. in February 2006. The Company records goodwill when consideration paid in a business acquisition exceeds the fair value of the net tangible assets and the identified intangible assets acquired. Goodwill is not amortized but instead is subject to an annual impairment test or more frequently if events or changes in circumstances indicate that it may be impaired. The Company evaluates goodwill on an annual basis as of the end of the second quarter of each fiscal year. Management has determined that it operates as a single reporting unit and, therefore, evaluates goodwill impairment at the enterprise level.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">At the end of the second quarter of 2022, the Company completed its annual goodwill impairment test. Based on its assessment of certain qualitative factors such as market capitalization, management concluded that the fair value of the Company was more likely than not greater than its carrying amount as of July 2, 2022. As such, it was not necessary to perform the two-step quantitative goodwill impairment test at the time.</span></div></ix:nonNumeric><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">There have been no significant events or changes in circumstances subsequent to the 2022 annual impairment test that would more likely than not indicate that the carrying value of goodwill may have been impaired as of December&#160;31, 2022. There were <ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="INF" name="us-gaap:GoodwillImpairmentLoss" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjI1MTE_d9706ccc-3a6b-471a-9188-f63e4a02c94f"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="INF" name="us-gaap:GoodwillImpairmentLoss" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjI1MTE_e820f773-dffa-418d-887c-fb5666891961"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="INF" name="us-gaap:GoodwillImpairmentLoss" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjI1MTE_fc62e23c-97f6-4613-aa5c-4c959f352a2e">no</ix:nonFraction></ix:nonFraction></ix:nonFraction> impairment losses for goodwill for the years ended December&#160;31, 2022, 2021 or 2020.</span></div><ix:continuation id="ie2c8adc2c5534140a228cbebc27aaab7"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Deferred Revenue</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Deferred revenue results from transactions where the Company billed the customer for products or services and when cash payments are received or due prior to transferring control of the promised goods or services to the customer. </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Payment terms to customers typically range from net&#160;30&#160;to net&#160;90&#160;days and vary by the size and location of customer and the products or services offered. The period between the transfer of control of the promised good or service to a customer and when payment is due is not significant.</span></div></ix:continuation><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:IncomeTaxPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMzU_8676dc4b-09b7-4409-9149-51e359d381ed" continuedAt="i4c619d325ef94ed1aa5d292028f208e1" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Income Taxes</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company evaluates its tax positions and estimates its current tax exposure along with assessing temporary differences that result from different book to tax treatment of items not currently deductible for tax purposes. These differences result in deferred tax assets and liabilities on the Company&#8217;s Consolidated Balance Sheets, which are estimated based upon the </span></div></ix:nonNumeric></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">44</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><ix:continuation id="i0bbc022a9b78434d8bc9cfca29d7de98"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i4c619d325ef94ed1aa5d292028f208e1" continuedAt="ic334aa2a903f4c8c9b461f2fc7fde8a7">difference between the financial statement and tax bases of assets and liabilities using the enacted tax rates that will be in effect when these differences reverse. In general, deferred tax assets represent future tax benefits to be received when certain expenses previously recognized in the Company&#8217;s Consolidated Statements of Comprehensive Income become deductible expenses under applicable income tax laws or loss or credit carryforwards are utilized. Accordingly, realization of the Company&#8217;s deferred tax assets is dependent on future taxable income against which these deductions, losses and credits can be utilized.</ix:continuation></span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="ic334aa2a903f4c8c9b461f2fc7fde8a7">The Company must assess the likelihood that deferred tax assets will be recovered from future taxable income, and if the Company determines that recovery is not more likely than not, the Company must establish a valuation allowance. Management judgment is required in determining its provision for income taxes, deferred tax assets and liabilities and any valuation allowance recorded against its net deferred tax assets. In the third quarter of 2021, the Company reversed the majority of its valuation allowance and recorded on its balance sheet U.S. federal and certain state deferred tax assets of $<ix:nonFraction unitRef="usd" contextRef="if54b7cb1441945f288166b95742d4e04_D20210704-20211002" decimals="-5" name="us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMTA5OTUxMTY3Mzk2Ng_41502837-ce1e-4d3d-9c8f-147a8ca31b8f">162.0</ix:nonFraction>&#160;million. As of December 31, 2022, the Company determined that positive evidence continues to outweigh negative evidence and concluded that it was more likely than not that its U.S. federal and state (with the exception of California) deferred tax assets are realizable.</ix:continuation> The Company currently maintains a valuation allowance of $<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-5" name="us-gaap:DeferredTaxAssetsValuationAllowance" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjU2OTA_3c9c5eb9-f371-4924-9f36-b983e2ab9013">29.9</ix:nonFraction> million for certain U.S. federal and California deferred tax assets.</span></div><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMTk_8884b72c-fa71-4d8c-9a1c-d09a4086993a" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Newly Adopted Accounting Standards</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company did not adopt any new accounting standards in 2022 that were significant to the Company.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Recent Accounting Pronouncements Not Yet Adopted</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">There have been no accounting pronouncements or changes in accounting pronouncements that are significant or potentially significant to the Company.</span></div></ix:nonNumeric></ix:continuation><div id="i1dda958eb66f4ab38aa84c917304ece3_85"></div><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2.  <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:CashCashEquivalentsAndMarketableSecuritiesTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RleHRyZWdpb246YzE4NTU1MTFhYTgzNGU0NWEyYzg1MzUxMzE3NGE3NWNfNDY3_59ad6bf5-d3db-4926-974f-bbb87138a8d6" continuedAt="i08860813b63c4236bfc6d89360e02d55" escape="true">Cash, Cash Equivalents and Marketable Securities</ix:nonNumeric></span></div><ix:continuation id="i08860813b63c4236bfc6d89360e02d55" continuedAt="i90ad26cec70840318fbb531a4540a2b8"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfCashAndCashEquivalentsTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RleHRyZWdpb246YzE4NTU1MTFhYTgzNGU0NWEyYzg1MzUxMzE3NGE3NWNfNDc0_45815ac6-0cb8-4a75-95d0-24d95810c345" escape="true"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cash, cash equivalents and marketable securities consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-indent:22.5pt"><span><br/></span></div><div style="margin-top:5pt;text-indent:22.5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:95.467%"><tr><td style="width:1.0%"></td><td style="width:73.172%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.484%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.079%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.484%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.081%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash and cash equivalents:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic38a86a38cbb476798e3dd19d71ee36d_I20221231" decimals="-3" name="us-gaap:Cash" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMy0yLTEtMS0zNjE5OA_a30725dd-3576-4857-87be-4442f352b496">39,189</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic6740d270bd44d0183c169758c4ea62d_I20211231" decimals="-3" name="us-gaap:Cash" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMy00LTEtMS0zNjE5OA_bccae277-8f85-4e3a-9e26-9e198d1a9a7f">26,442</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commercial paper</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0f4b83625a934f8ca3fe1b1ca19c4b55_I20221231" decimals="-3" name="us-gaap:CashEquivalentsAtCarryingValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNC0yLTEtMS0zNjE5OA_773c5d62-cae7-4346-8057-d2120fdaaa23">33,199</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i673cc06359884f75af7187294e97424c_I20211231" decimals="-3" name="us-gaap:CashEquivalentsAtCarryingValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNC00LTEtMS0zNjE5OA_a9287ffc-362c-4f41-8649-4903a77ea25c">21,582</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ied4eb127f8c34de9ab8ee8c6d45c70d5_I20221231" decimals="-3" name="us-gaap:CashEquivalentsAtCarryingValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNS0yLTEtMS0zNjE5OA_86f8472f-ae67-4963-9fc8-a7de153f9214">5,990</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i664d2390333c48adb557984dce1aa6e2_I20211231" decimals="-3" name="us-gaap:CashEquivalentsAtCarryingValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNS00LTEtMS0zNjE5OA_892bc834-12f5-4526-87fa-17a52628ff6b">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Money market funds</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9c5831145c9248d6abebe6d6cef1287a_I20221231" decimals="-3" name="us-gaap:CashEquivalentsAtCarryingValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNi0yLTEtMS0zNjE5OA_34d0342a-de68-4405-b12a-9ad13da500ad">555</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i09a1c858595a4a30a3c15e60909e366e_I20211231" decimals="-3" name="us-gaap:CashEquivalentsAtCarryingValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNi00LTEtMS0zNjE5OA_f70449bb-40e6-427a-a433-7b3ed8602d81">2,320</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Corporate debt securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i7e64a1001c8149bcaa2a5d6d9cb3384f_I20221231" decimals="-3" name="us-gaap:CashEquivalentsAtCarryingValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNy0yLTEtMS0zNjE5OA_6bfc067b-040a-4225-8a4f-46022bd6e416">140</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i535c7a70b8a942c79affe1727d7ae52b_I20211231" decimals="-3" name="us-gaap:CashEquivalentsAtCarryingValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNy00LTEtMS0zNjE5OA_91421ed6-a11a-4a54-b240-56a55902c1ad">989</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total cash and cash equivalents</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfOC0yLTEtMS0zNjE5OA_3ede234e-2da3-4431-81d0-0be1728faa10">79,073</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfOC00LTEtMS0zNjE5OA_68303176-3a9a-424e-8250-08a2c9b1ec19">51,333</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Marketable securities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iae1efd6e91be43c984f2ec4c782de70d_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTAtMi0xLTEtMzYxOTg_637230b3-3a6d-4ed7-8757-08194108b603">106,750</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3333828445aa4fb99c0ed582b56ad206_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTAtNC0xLTEtMzYxOTg_ccf55a9f-88df-4d08-a71a-4731f424bfd9">60,279</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commercial paper</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic16ba641b2084da4b404a37dcb45e256_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTEtMi0xLTEtMzYxOTg_291eabc7-ed07-470b-8ae3-1a364be7fc84">28,992</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5b99835257004211b4a068dd960dc899_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTEtNC0xLTEtMzYxOTg_c430d6ee-c4d2-4c00-bb7d-e33f5fed6328">80,812</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government agency securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i820b02ffde9349fb97eb0f64a6f6c7e9_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTItMi0xLTEtMzYxOTg_b20bd8f4-2bfc-4ad2-b6c3-a63517225438">23,632</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i949c87eb081c4441b7e851734c228f84_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTItNC0xLTEtMzYxOTg_05cd3d62-03c7-4c8f-a011-21a34dccde33">5,527</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Corporate debt securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6d7b2ffce6be4b6fa0bb526a979535d0_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTMtMi0xLTEtMzYxOTg_5eda196f-f45f-4a18-b5c0-b9ed6d596944">3,168</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0a565c8b23bc4d09a1f297fb9bed6d2e_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTMtNC0xLTEtMzYxOTg_525d3ceb-126d-4283-acb3-93a7bbf37499">3,576</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Municipal securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i744cd44f39884a5a9e7c494e807de46d_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTQtMi0xLTEtMzYxOTg_616c1a0c-5e2e-4029-a2ae-5ce71d43bb4a">100</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4793b5e7b36744d0b452f2f9832d9099_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTQtNC0xLTEtMzYxOTg_fd0d4418-ee73-4578-9c58-3384ac303957">2,808</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total marketable securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTUtMi0xLTEtMzYxOTg_acff2460-1561-4675-80a6-4d54f0b2017d">162,642</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTUtNC0xLTEtMzYxOTg_2477a1e8-2fca-4471-b2f6-748a579a86a7">153,002</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="calx:CashCashEquivalentsAndMarketableSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTYtMi0xLTEtMzYxOTg_3fd67eec-82b9-415f-8032-dd160f72396a">241,715</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="calx:CashCashEquivalentsAndMarketableSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTYtNC0xLTEtMzYxOTg_394a5ece-7f3b-4036-9adc-ff53e14da320">204,335</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The carrying amounts of the Company&#8217;s money market funds approximate their fair values due to their nature, duration and short maturities. As of December&#160;31, 2022, all marketable securities were due in <ix:nonNumeric contextRef="ibcead81fc3df41b3a1cf1e698b490bdc_I20221231" name="us-gaap:DebtSecuritiesAvailableForSaleTerm" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RleHRyZWdpb246YzE4NTU1MTFhYTgzNGU0NWEyYzg1MzUxMzE3NGE3NWNfMTA5OTUxMTYyODI2MA_0534fd95-142a-4fd9-9101-e488ebfd274d">two years</ix:nonNumeric> or less.</span></div></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">45</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><ix:continuation id="i90ad26cec70840318fbb531a4540a2b8"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RleHRyZWdpb246YzE4NTU1MTFhYTgzNGU0NWEyYzg1MzUxMzE3NGE3NWNfMTA5OTUxMTYyODU0Nw_5a77a612-c40b-4584-9dd9-1293381f749a" escape="true"><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The amortized cost and fair value of marketable securities as of December&#160;31, 2022 were as follows (in thousands):</span></div><div style="margin-top:7pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:45.245%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.139%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.835%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.554%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.835%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.554%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.838%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Amortized Cost</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Gross Unrealized Losses</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Fair Value</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i48c13f271a7048a49e9f93bc547075a0_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMS0yLTEtMS0zOTY1Mw_5f4b188d-5389-4da6-99f5-9f647ac773e8">114,119</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i48c13f271a7048a49e9f93bc547075a0_I20221231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMS00LTEtMS0zOTY1Mw_b235b2ec-bca0-4fdb-a297-9b067fa72e32">1,379</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i48c13f271a7048a49e9f93bc547075a0_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMS02LTEtMS0zOTY1Mw_b0d0f227-eb1b-4742-a8a7-fde62bd70ddf">112,740</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commercial paper</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i83fd5d90fe6b4285bab023841c3a14b0_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMi0yLTEtMS0zOTY1Mw_3bbc7123-2dec-4880-bb0b-1a547d98c57a">62,262</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i83fd5d90fe6b4285bab023841c3a14b0_I20221231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMi00LTEtMS0zOTY1Mw_03802489-a411-4f0c-a5c1-453b99f84247">71</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i83fd5d90fe6b4285bab023841c3a14b0_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMi02LTEtMS0zOTY1Mw_4a2b7412-9697-4dec-9ead-10400cadb0e7">62,191</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government agency securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i86f4de24126640ba8b71657febb828f0_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMy0yLTEtMS0zOTY1Mw_121baf3a-588d-4a4b-a963-814fe98b0189">23,876</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i86f4de24126640ba8b71657febb828f0_I20221231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMy00LTEtMS0zOTY1Mw_510c457e-2023-4744-b4d3-6ddbe0703397">244</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i86f4de24126640ba8b71657febb828f0_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMy02LTEtMS0zOTY1Mw_3f1a6222-3dc5-4777-ba7d-fb1fd311b1d3">23,632</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Corporate debt securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="icd24b2de72464d3ba30d3ad07a4e56cd_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNC0yLTEtMS0zOTY1Mw_14436529-b17d-4169-a9a4-1405b78e7e6b">3,312</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="icd24b2de72464d3ba30d3ad07a4e56cd_I20221231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNC00LTEtMS0zOTY1Mw_bc8976cf-34ed-4da9-a280-ebefa4052bfe">4</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="icd24b2de72464d3ba30d3ad07a4e56cd_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNC02LTEtMS0zOTY1Mw_bac39c6c-afe2-4551-814d-3632b9c15e4a">3,308</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Municipal securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2c3a8629b4304f7eb5ca0f3daa147a20_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNS0yLTEtMS0zOTY1Mw_d4069bfc-cd33-4710-b002-1d1fb6572a7c">101</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i2c3a8629b4304f7eb5ca0f3daa147a20_I20221231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNS00LTEtMS0zOTY1Mw_4685692e-6431-487a-b871-525c690d3e5f">1</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2c3a8629b4304f7eb5ca0f3daa147a20_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNS02LTEtMS0zOTY1Mw_aa96b23d-d83a-4ea6-84d1-9400df834f34">100</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total marketable securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic3ce6d215fd045b89989818cac3c19c7_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNi0yLTEtMS0zOTY1Mw_daa8454d-c450-4498-a230-f7c6220150d8">203,670</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ic3ce6d215fd045b89989818cac3c19c7_I20221231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNi00LTEtMS0zOTY1Mw_90903a94-a09a-4ab5-8bc9-9b5b26557c12">1,699</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic3ce6d215fd045b89989818cac3c19c7_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNi02LTEtMS0zOTY1Mw_1af834ea-5cd1-4b43-9428-1ea658fcb1df">201,971</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:7pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Unrealized gains and losses were not significant as of December&#160;31, 2021.</span></div></ix:continuation><div id="i1dda958eb66f4ab38aa84c917304ece3_88"></div><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">3.  <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:FairValueDisclosuresTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RleHRyZWdpb246ZDBlY2YwNGVkNzYxNDdmZWIwMDRhMjI4ODMwN2I4M2JfMTYxMA_d171caaf-8950-46d0-a03e-b570772648fa" continuedAt="i38e1a26994aa4481ae949fbd1b45d26d" escape="true">Fair Value Measurements</ix:nonNumeric></span></div><ix:continuation id="i38e1a26994aa4481ae949fbd1b45d26d"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company measures its cash equivalents and marketable securities at fair value on a recurring basis. Fair value is an exit price, representing the amount that would be received to sell an asset or paid to transfer a liability in an orderly transaction between market participants. As such, fair value is a market-based measurement that should be determined based on assumptions that market participants would use in pricing an asset or liability. The Company utilizes the following three-tier value hierarchy which prioritizes the inputs used in measuring fair value:</span></div><div style="margin-top:6pt;padding-left:36pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Level 1 &#8211; Observable inputs that reflect quoted prices (unadjusted) for identical assets or liabilities in active markets.</span></div><div style="margin-top:6pt;padding-left:36pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Level 2 &#8211; Observable inputs other than quoted prices included in Level 1 for similar instruments in active markets, quoted prices for identical or similar instruments in markets that are not active, and model-driven valuations in which all significant inputs and significant value drivers are observable in active markets.</span></div><div style="margin-top:6pt;padding-left:36pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Level 3 &#8211; Unobservable inputs to the valuation derived from fair valuation techniques in which one or more significant inputs or significant value drivers are unobservable. The fair value hierarchy also requires the Company to maximize the use of observable inputs, when available, and to minimize the use of unobservable inputs when determining inputs and determining fair value.</span></div><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RleHRyZWdpb246ZDBlY2YwNGVkNzYxNDdmZWIwMDRhMjI4ODMwN2I4M2JfMTYwMw_7052f650-cb05-4e85-ae32-27484fb20bf4" escape="true"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following tables sets forth the Company&#8217;s financial assets measured at fair value on a recurring basis based on the three-tier fair value hierarchy (in thousands): </span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:64.835%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.572%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.823%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.572%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.823%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.575%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">As of December 31, 2022</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Level 1</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Level 2</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Total</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Money market funds</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib4730c11d033405ab26535a7d5d1902a_I20221231" decimals="-3" name="us-gaap:CashEquivalentsAtCarryingValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMS0xLTEtMS0zNjE5OA_728c37a0-b55b-45f6-aec2-7bab7b9b26d6">555</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4e5e68f096524db3a6c5289a50bd1e54_I20221231" decimals="-3" name="us-gaap:CashEquivalentsAtCarryingValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMS0zLTEtMS0zNjE5OA_27467ddc-3529-4818-a91e-0b63460b996b">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0ab466283f8f4102886a538b89828f49_I20221231" decimals="-3" name="us-gaap:CashEquivalentsAtCarryingValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMS01LTEtMS0zNjE5OA_7cc0dfd5-fb70-485a-85d5-368c35b8b665">555</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i68862cb4af34489a821a714a84d59703_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMi0xLTEtMS0zNjE5OA_46b180c7-a912-4c7e-817a-dafb59fbb09e">112,740</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iec2cc538fb224ec88a4f3b699672a078_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMi0zLTEtMS0zNjE5OA_0e18920b-756e-4d06-9cd3-f2823673e419">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i056a524a4298478b90de1f1a23ee2241_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMi01LTEtMS0zNjE5OA_76f91625-11e9-4c7f-bbf7-3beb76a24398">112,740</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commercial paper</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i67913f8a27bc47f1be4f5522a875439a_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMy0xLTEtMS0zNjE5OA_4d1c6726-712e-4e9b-9f59-19b54cebb6a9">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id840696585cf4c0d85ed3042e75c8d4f_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMy0zLTEtMS0zNjE5OA_19eced96-c13c-4c7f-8135-9cc533e02a35">62,191</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iebc70d6cc46241e39e116d70f0745b5e_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMy01LTEtMS0zNjE5OA_a96114b1-e34f-419f-bd26-8b1ccca43b18">62,191</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government agency securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic8e53431a0164b19b6fd5952ecd4356d_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNC0xLTEtMS0zNjE5OA_78372087-66e1-478f-8cf3-eb3e2897d3c4">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i20829567e15d4e138a070a1d2bd1f296_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNC0zLTEtMS0zNjE5OA_967ab089-d83c-4188-b771-f620f75b7ec6">23,632</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i952170666232494785ca17ec4b0f402f_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNC01LTEtMS0zNjE5OA_6a4ec524-813b-438e-a9ce-ef794365dfe8">23,632</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Corporate debt securities</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iedb70c0486cf430c999ecb779842f9b7_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNS0xLTEtMS0zNjE5OA_29729dd8-08fd-4656-a64d-7e01e0f0c632">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i03feb03d4b1948faa67282c5f94b8b9f_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNS0zLTEtMS0zNjE5OA_10a28d63-44f0-44cf-92e6-3323d527d4e6">3,308</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iec5c97ff467a498191966be3f6fe21e2_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNS01LTEtMS0zNjE5OA_4454e868-eef1-4623-a80b-188c14c97936">3,308</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Municipal securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i845d08c05ade4329a7d34e722a2a29ee_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNi0xLTEtMS0zNjE5OA_f36014c5-8f4f-428b-8c52-134ef399d57c">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="icbb5af7610094c1ea043d7757229aea7_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNi0zLTEtMS0zNjE5OA_acf547e5-102e-4d0b-a80a-3d7bba7cad30">100</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i57af706ebf9c4dcfbc3ae9b3887ece24_I20221231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNi01LTEtMS0zNjE5OA_40d6f78a-01b8-4340-b950-6460ef56fb25">100</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia446f035a91b4e8cbc5dfb2943bf38cc_I20221231" decimals="-3" name="us-gaap:AssetsFairValueDisclosure" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNy0xLTEtMS0zNjE5OA_b92f320c-2618-4893-94d5-291d5c83a1d7">113,295</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i04a13de45df2495e910c5650860ee7ae_I20221231" decimals="-3" name="us-gaap:AssetsFairValueDisclosure" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNy0zLTEtMS0zNjE5OA_8297edfa-2d42-4524-9173-316a8fd44738">89,231</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ibcbd3e4469a449f7b3a0e404714fbb82_I20221231" decimals="-3" name="us-gaap:AssetsFairValueDisclosure" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNy01LTEtMS0zNjE5OA_a149db54-0424-4877-976e-521ed6cd2396">202,526</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:5pt"><span><br/></span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:64.835%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.572%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.823%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.572%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.823%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.575%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">As of December 31, 2021</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Level 1</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Level 2</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Total</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Money market funds</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i92547be2d4ec4c2fbe99b417670a0c1b_I20211231" decimals="-3" name="us-gaap:CashEquivalentsAtCarryingValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMS0xLTEtMS0zOTY2MQ_31e10d8b-8283-4da2-b6f6-fcbf73435d07">2,320</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie5b3737f696b45309b05ec8486ef71e8_I20211231" decimals="-3" name="us-gaap:CashEquivalentsAtCarryingValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMS0zLTEtMS0zOTY2MQ_405a6500-0e03-460a-b39b-ab3d4c715888">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iffabf941f6c24db2bf8711334e47cbaf_I20211231" decimals="-3" name="us-gaap:CashEquivalentsAtCarryingValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMS01LTEtMS0zOTY2MQ_f326f811-a5bd-49bf-bc56-2db9238bce2e">2,320</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i17b34b27f19945deb8a3001fdb72bef4_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMi0xLTEtMS0zOTY2MQ_8b1b9f47-0dc7-4d85-b9cd-021345a0ee0b">60,279</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3b2a3664f2194292821239b94d9d12d5_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMi0zLTEtMS0zOTY2MQ_2c314ebf-742b-46ec-8229-81284fdcd242">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2e365a49d2204d5eb34750b7781343b9_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMi01LTEtMS0zOTY2MQ_265cea21-b62d-482a-979d-728fe6c1c5dc">60,279</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commercial paper</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if31b6a989a394506af109a221346eb6d_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMy0xLTEtMS0zOTY2MQ_59874a60-48d6-42f0-aabf-762fc9b36fad">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i17abd99a86944a3faf931f3eee82c2c4_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMy0zLTEtMS0zOTY2MQ_3bcc44fd-f837-4bb0-b22a-0692d1340539">102,394</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3ebca95019264ed79a51ec6974672638_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMy01LTEtMS0zOTY2MQ_b59034a7-e85f-4b89-ab23-5cb362927ce7">102,394</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government agency securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if01ab496558d41afab2522673093c772_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNC0xLTEtMS0zOTY2MQ_0adc0356-b7a6-4e6e-907f-7d594a874d47">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ifac485b7e7d44598b822d573869dfc8f_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNC0zLTEtMS0zOTY2MQ_cfbd7e79-c783-47a7-8fe0-58671912e604">5,527</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i682285ed68dc42ae833aa59cfbd46465_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNC01LTEtMS0zOTY2MQ_d23fe273-3c01-47e9-b5ab-e636ad6d6fbd">5,527</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Corporate debt securities</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ifa934a3e48ab4d279f8356602465981e_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNS0xLTEtMS0zOTY2MQ_1564cec7-cba3-422a-99b5-82b7952e7598">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib755630aec6046029d3ebd796781b082_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNS0zLTEtMS0zOTY2MQ_b613d0d9-f52d-4731-8ed1-f0af31e29e29">4,565</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1e4012789050403a8f1ba4ae649dc645_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNS01LTEtMS0zOTY2MQ_e94fdad5-3b46-409e-b4aa-effdf06fa6d3">4,565</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Municipal securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib9efcd417c244b0da39cf058581c135d_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNi0xLTEtMS0zOTY2MQ_8e02abcf-e35a-4c44-9f01-2eff51b9feb8">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id5bc9fe6b44f485ea9b213709ae25a11_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNi0zLTEtMS0zOTY2MQ_c64961a6-2fa3-4040-9459-d6c769fd9fce">2,808</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i189b4703619e4017b1fab65dbc717051_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNi01LTEtMS0zOTY2MQ_9384108b-9072-42fb-b59b-bf130c372afb">2,808</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i73bf3f7d4a2e494896bee43a0d38e4ca_I20211231" decimals="-3" name="us-gaap:AssetsFairValueDisclosure" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNy0xLTEtMS0zOTY2MQ_0330fdf4-5b00-4a53-830f-9adbd805f787">62,599</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id818e7cab6a34ee78d221eeb25506d00_I20211231" decimals="-3" name="us-gaap:AssetsFairValueDisclosure" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNy0zLTEtMS0zOTY2MQ_72e84002-18e4-4b6a-946d-6ecad8a710e3">115,294</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic5caa568a0ce4d57a7e0f3c3a88488d8_I20211231" decimals="-3" name="us-gaap:AssetsFairValueDisclosure" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNy01LTEtMS0zOTY2MQ_456b5be3-a8cf-49ea-853e-6f6bb6458232">177,893</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">46</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_91"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">4.  <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:SupplementalBalanceSheetDisclosuresTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ3MQ_fa55b3ed-4e25-4e5a-966b-6d9a453ff14f" continuedAt="i8d1dd8a0c22445958504e895f00d7e69" escape="true">Balance Sheet Details</ix:nonNumeric></span></div><ix:continuation id="i8d1dd8a0c22445958504e895f00d7e69" continuedAt="i6e384a0dceb744b59061d389cb49b140"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ5NA_3536d008-f6f6-44aa-8e39-1dc687776bf4" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Accounts receivable, net consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:98.538%"><tr><td style="width:1.0%"></td><td style="width:73.380%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.432%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.027%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.432%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.029%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accounts receivable</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:AccountsReceivableGrossCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfMi0yLTEtMS0zNjE5OA_e411f615-d323-44a4-a6e9-7de99d50ef9f">94,201</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:AccountsReceivableGrossCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfMi00LTEtMS0zNjE5OA_71816d40-b727-478e-9eb3-9df42d9b7ecf">85,944</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Allowance for doubtful accounts</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfMy0yLTEtMS0zNjE5OA_9a4f0654-205f-4240-8a77-b33d85af4383">397</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfMy00LTEtMS0zNjE5OA_1faf3fce-b535-404a-902e-1220f39514d4">725</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:AccountsReceivableNetCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfNC0yLTEtMS0zNjE5OA_bedcd568-59e7-4220-9c11-10a608c47cf9">93,804</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:AccountsReceivableNetCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfNC00LTEtMS0zNjE5OA_9834b75f-7862-4fbe-a5f8-3c188d6072e3">85,219</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="calx:ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ4OQ_8dea92ee-f209-4a04-89ee-b4ad413a9427" escape="true"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The table below summarizes the changes in allowance for doubtful accounts and product return liability for the periods indicated (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.076%"><tr><td style="width:1.0%"></td><td style="width:46.490%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.456%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.345%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.456%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.345%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.456%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.345%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.456%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.351%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Balance at Beginning of Year</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Additions Charged to Expenses or Revenue Net of Recoveries</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Write Offs and Returns</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Balance at <br/>End of Year</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Year Ended December 31, 2022:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Allowance for doubtful accounts</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ieb051ab610094bc982d7f8bddacb801c_I20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMi0yLTEtMS0zNjE5OA_716aaf58-60b3-4b0d-808c-393da3a3c090">725</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ib92f3ac53aca49de92990fdea96d45fa_D20220101-20221231" decimals="-3" sign="-" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMi00LTEtMS0zNjE5OA_d310ad59-38e5-41ad-958c-458f255e0958">276</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ib92f3ac53aca49de92990fdea96d45fa_D20220101-20221231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMi02LTEtMS0zNjE5OA_a7c4af90-d701-4768-9001-71cbc8a97a33">52</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8eef97f8547d428085e80cc1cc4f16ce_I20221231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMi04LTEtMS0zNjE5OA_d6dc064f-a7fa-4d95-8a5e-07b3f353d39f">397</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Product return liability</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iebe8abb865a348c58ba05736022e6e1f_I20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMy0yLTEtMS0zNjE5OA_32e4b0c3-0f89-4af5-815a-66609386fecf">1,836</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9d905ccbbb3241a997324600f7a5cfc2_D20220101-20221231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMy00LTEtMS0zNjE5OA_587d09dd-0c46-4526-a0a4-54cc34df18d1">5,622</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i9d905ccbbb3241a997324600f7a5cfc2_D20220101-20221231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMy02LTEtMS0zNjE5OA_4343ad99-9153-4684-b1d8-7ceebd14cf5a">4,497</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if617aab8c27e4dc6aab4a0a32d272ca3_I20221231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMy04LTEtMS0zNjE5OA_7325c845-f4fd-4ea7-b509-7bf2d54a71cc">2,961</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Year Ended December 31, 2021:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Allowance for doubtful accounts</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5782a4e7e94146cbac209e543c2116a3_I20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNS0yLTEtMS0zNjE5OA_51748538-0699-4779-8323-41daed165c6a">1,405</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="iad5ba5a8071f469bbd153fbec01071bb_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNS00LTEtMS0zNjE5OA_ffbadea6-a15e-4c4d-90c0-1af017870981">201</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="iad5ba5a8071f469bbd153fbec01071bb_D20210101-20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNS02LTEtMS0zNjE5OA_f6883977-b3d9-46fe-93fa-d18f30ed2e21">479</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ieb051ab610094bc982d7f8bddacb801c_I20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNS04LTEtMS0zNjE5OA_7667d4a1-c3d4-4647-9173-336896e1b7cd">725</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Product return liability</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i915095b41f604af89d5f5c1c0b516f64_I20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNi0yLTEtMS0zNjE5OA_39c265f9-eea0-46ca-9a06-de145335c5f4">1,888</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0f99024590684757bf76146dac6621f8_D20210101-20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNi00LTEtMS0zNjE5OA_ddc550e4-291f-45af-a3eb-554f57b67375">3,681</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0f99024590684757bf76146dac6621f8_D20210101-20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNi02LTEtMS0zNjE5OA_6eae9b56-63c6-4947-b3c9-f9b66a568705">3,733</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iebe8abb865a348c58ba05736022e6e1f_I20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNi04LTEtMS0zNjE5OA_21314124-e19d-4de0-a401-0602b6a3a5a2">1,836</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Year Ended December 31, 2020:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Allowance for doubtful accounts</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i87fd0a9a32974808b514ae0e6b4977f2_I20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOC0yLTEtMS0zNjE5OA_129ad578-50bd-4b99-9e70-90636d045e16">374</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i92749530cfc04658b8e87d80c4434870_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOC00LTEtMS0zNjE5OA_e05b8f21-b373-476e-82cf-af3b69951951">1,085</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i92749530cfc04658b8e87d80c4434870_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOC02LTEtMS0zNjE5OA_143f34aa-6d4f-4295-a9c3-4526a8bc75a1">54</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5782a4e7e94146cbac209e543c2116a3_I20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOC04LTEtMS0zNjE5OA_ca9d5d7c-d081-4a10-90e0-ae9fc45e92a6">1,405</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Product return liability</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie99c59fbe14a4befb7f451e29f097c4f_I20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOS0yLTEtMS0zNjE5OA_5715cada-58f8-4495-943c-25bcbdf41a30">919</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4827582f665d4174a35e6ed4f0286360_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOS00LTEtMS0zNjE5OA_c0757e63-e108-448e-bbe7-94e94927ac5d">3,391</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i4827582f665d4174a35e6ed4f0286360_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOS02LTEtMS0zNjE5OA_c28bc591-31b0-4eea-a3c3-4f4834e74a47">2,422</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i915095b41f604af89d5f5c1c0b516f64_I20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOS04LTEtMS0zNjE5OA_7289f553-d80b-4dec-b0d7-51b576a3e60d">1,888</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfInventoryCurrentTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ5OQ_0e6ce628-03d2-423e-87fe-bef9505ff56a" escape="true"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Inventory consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"><tr><td style="width:1.0%"></td><td style="width:73.035%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.454%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.178%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.454%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.179%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Raw materials</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:InventoryRawMaterialsNetOfReserves" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfMi0yLTEtMS0zNjE5OA_de9c39a5-82fb-4394-b7d7-c75fd2a0cead">640</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:InventoryRawMaterialsNetOfReserves" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfMi00LTEtMS0zNjE5OA_5de390a9-ca1b-4b86-81e8-0726ed510105">130</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Finished goods</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:InventoryFinishedGoodsNetOfReserves" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfMy0yLTEtMS0zNjE5OA_f5115f68-d0a3-417f-8eae-8b9cd76c7993">148,520</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:InventoryFinishedGoodsNetOfReserves" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfMy00LTEtMS0zNjE5OA_24927ec3-ce7c-4700-b1dd-29097dd4d464">88,750</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:InventoryNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfNC0yLTEtMS0zNjE5OA_a89d471f-ac64-4f1c-ac41-29122121424b">149,160</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:InventoryNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfNC00LTEtMS0zNjE5OA_a4783ed8-1c6b-4f02-ac53-d5b2ea899ae2">88,880</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTY0OTI2NzQ1MDAyMQ_73fbc332-429f-4382-b179-9791dd2a42c0" escape="true"><div style="margin-top:7pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Prepaid expenses and other current assets consisted of the following (in thousands):</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"><tr><td style="width:1.0%"></td><td style="width:73.750%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.446%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.828%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.446%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.830%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Supplier deposits</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:DepositsAssetsCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfMi0yLTEtMS00MTM4Nw_5e21f7ed-e79c-427d-9b99-24d25f56d686">39,064</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:DepositsAssetsCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfMi00LTEtMS00MTM4Nw_9308563b-7743-4643-b30a-20c73a8041cc">6,191</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Prepaid expenses and other current assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="calx:PrepaidExpensesAndOtherAssetsMiscellaneousCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfMy0yLTEtMS00MTM4Nw_4f10b126-a1e7-4af2-a8d4-56ce33b24944">23,627</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="calx:PrepaidExpensesAndOtherAssetsMiscellaneousCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfMy00LTEtMS00MTM4Nw_6c2c8176-77d9-4364-9683-1e36b462f97b">24,620</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfNC0yLTEtMS00MTM4Nw_217b8db7-4066-485f-9837-61e0350bcaac">62,691</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfNC00LTEtMS00MTM4Nw_9e1f5199-ace4-449a-bafb-1436cefb3532">30,811</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:PropertyPlantAndEquipmentTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ5NQ_c5ee4b41-7616-4886-832b-5d04ef952dd3" escape="true"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property and equipment, net consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"><tr><td style="width:1.0%"></td><td style="width:73.035%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.454%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.178%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.454%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.179%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Test equipment</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iebb784ec1d1048e4b3adf4de3e50ed56_I20221231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfMi0yLTEtMS0zNjE5OA_dcc3037e-5c70-404d-8942-66374671b7ce">44,106</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib3e6d85676a149d5b92fe67b4dd2f810_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfMi00LTEtMS0zNjE5OA_33c9a629-cd3f-4a26-b7fe-fa0b44b768d3">39,476</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Computer equipment</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic272514a784a4bfb9f74d54bf7e6b2d4_I20221231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfMy0yLTEtMS0zNjE5OA_b6058394-7b64-4f7a-91c4-9954085dbc9a">13,396</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9c61681ac2dd40a199c97e498d4424b3_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfMy00LTEtMS0zNjE5OA_0376853d-70a2-40a0-98e5-cefa68437b08">11,156</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Software</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="icb4228678bd94611ba039b6b832a6910_I20221231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNC0yLTEtMS0zNjE5OA_9fb2a0e0-0599-4163-93f0-844a0b6ca69c">10,389</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iec140b402bfd43a8810ed0d254278f7f_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNC00LTEtMS0zNjE5OA_a8e402c6-b78e-4c0d-8ee5-2bad9affc31d">9,013</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Leasehold improvements</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6ae01a9fed3143c39a5d8900e11ab1dc_I20221231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNS0yLTEtMS0zNjE5OA_25d00388-8136-4fd0-9061-7c657ad3b824">1,730</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id764aa16db854d7088bcc29cffc1ecd4_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNS00LTEtMS0zNjE5OA_cf842b9d-a5ce-439f-81e6-e27cf63df3d9">1,351</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Furniture and fixtures</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6ad0d0e543464e82a0d0f6c87834547c_I20221231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNi0yLTEtMS0zNjE5OA_2c3c23f5-5278-46b0-8c4f-564499c41b66">1,153</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1ab5679f664a4a9483a2e951b60376c2_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNi00LTEtMS0zNjE5OA_846cf51b-08e7-4d9f-848a-1c3c13d020b5">1,812</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNy0yLTEtMS0zNjE5OA_cb33f4a7-1c69-4529-84a1-85fb4f2ee61c">70,774</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNy00LTEtMS0zNjE5OA_d663b34f-2fe0-4ac4-910c-a468d010d86c">62,808</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accumulated depreciation and amortization</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfOC0yLTEtMS0zNjE5OA_107baa94-b090-4029-b3c4-efe81f084ab5">44,940</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfOC00LTEtMS0zNjE5OA_fdfbf422-bb34-4968-bcd8-c020bdfef10a">41,025</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfOS0yLTEtMS0zNjE5OA_ad142b67-52da-4e9e-99a9-d66a4d9aecd6">25,834</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfOS00LTEtMS0zNjE5OA_973048a6-6050-4f87-9cf2-e8170b1c05b9">21,783</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:7pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Depreciation and amortization expenses were&#160;$<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-5" name="us-gaap:Depreciation" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfNDIw_cdc5835b-760a-41e6-a3f3-e436d5453bb8">14.3</ix:nonFraction> million, $<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-5" name="us-gaap:Depreciation" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfNDI0_695fdbad-92c6-4a50-a6f8-2637bb45e8f2">15.0</ix:nonFraction> million and&#160;$<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-5" name="us-gaap:Depreciation" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfNDMx_f71e4056-0595-4250-bfcf-3e4d109e9355">13.7</ix:nonFraction> million for the years ended December&#160;31, 2022, 2021 and 2020, respectively.</span></div></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">47</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><ix:continuation id="i6e384a0dceb744b59061d389cb49b140" continuedAt="i860abceb944640a9bb007314ea0ce414"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfOtherAssetsNoncurrentTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ5Mw_cedbb4b4-dbd8-4894-ba64-97937e6af227" escape="true"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Other long-term assets consisted of the following (in thousands):</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"><tr><td style="width:1.0%"></td><td style="width:73.750%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.446%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.828%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.446%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.830%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Intangible asset</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:IntangibleAssetsNetExcludingGoodwill" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfMi0yLTEtMS0zNjE5OA_f0e50d07-b8f6-48e1-b606-65128ec6b7a1">4,253</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:IntangibleAssetsNetExcludingGoodwill" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfMi00LTEtMS0zNjE5OA_cd85099f-f67e-4cc5-b95a-bf63381a1b0d">6,885</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other long-term assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:OtherAssetsMiscellaneousNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfMy0yLTEtMS0zNjE5OA_96299e2d-0808-4d6a-8761-297c706cdaf7">14,889</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:OtherAssetsMiscellaneousNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfMy00LTEtMS0zNjE5OA_97aa2fd1-dc28-4788-ae72-524c58cc082a">6,800</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:OtherAssetsNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfNC0yLTEtMS0zNjE5OA_1db0f7e8-7f90-4d2d-a491-c53185acd19b">19,142</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:OtherAssetsNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfNC00LTEtMS0zNjE5OA_aeab9773-a005-436c-8977-a63287dc263b">13,685</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:7pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Intangible Asset Acquisition</span></div><div style="margin-top:7pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In March 2018, and as amended in December 2020, the Company entered into an agreement with a vendor to develop a certain software product and related enhancements pursuant to which the Company is obligated to make revenue-share payments under the program, subject to aggregate fixed revenue-share payments of $<ix:nonFraction unitRef="usd" contextRef="ifec7805f58bf4e1eb494b1fd74099264_I20201231" decimals="-5" name="us-gaap:RoyaltyGuaranteesCommitmentsAmount" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTcwOA_5432da6c-822a-4dd4-97bd-8524c97d7511">15.8</ix:nonFraction>&#160;million. The payments are based on a revenue-share rate applied to revenue from the developed-product and the corresponding hardware sales through March 2024. If the minimum revenue-share payments are not achieved by the end of that period, a true-up payment will be due. As of December&#160;31, 2022, the liability, including accrued interest, was $<ix:nonFraction unitRef="usd" contextRef="i64cf409db5e74b9e888f27feb92d3f31_I20221231" decimals="-5" name="us-gaap:OtherLiabilities" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTcyMw_967d74d6-04ac-4fce-89b1-cbc0a69830c0">11.4</ix:nonFraction>&#160;million, of which $<ix:nonFraction unitRef="usd" contextRef="i64cf409db5e74b9e888f27feb92d3f31_I20221231" decimals="-5" name="us-gaap:AccruedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTczOA_3b6070dd-afbc-4dcb-a335-67cb799dd2d2">7.2</ix:nonFraction>&#160;million is included in &#8220;Accrued liabilities&#8221; and $<ix:nonFraction unitRef="usd" contextRef="i64cf409db5e74b9e888f27feb92d3f31_I20221231" decimals="-5" name="us-gaap:OtherLiabilitiesNoncurrent" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTc1Mg_396f73b6-270e-4d8c-84e9-7abaae6f998a">4.2</ix:nonFraction>&#160;million in &#8220;Other long-term liabilities&#8221; in the accompanying Consolidated Balance Sheet. As of December 31, 2021, the liability, including accrued interest, was $<ix:nonFraction unitRef="usd" contextRef="i29707179eee34196994e77484ecb2b78_I20211231" decimals="-5" name="us-gaap:OtherLiabilities" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTc2Ng_b764596c-c8ec-4564-b32f-abad9a4f2d0b">13.2</ix:nonFraction>&#160;million, of which $<ix:nonFraction unitRef="usd" contextRef="i29707179eee34196994e77484ecb2b78_I20211231" decimals="-5" name="us-gaap:AccruedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTc4MQ_c0509844-c863-4f45-a603-d0dbe6021844">4.7</ix:nonFraction>&#160;million was included in &#8220;Accrued liabilities&#8221; and $<ix:nonFraction unitRef="usd" contextRef="i29707179eee34196994e77484ecb2b78_I20211231" decimals="-5" name="us-gaap:OtherLiabilitiesNoncurrent" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTc5NQ_aa15298e-5f6f-4c27-a932-5fc18f67d78f">8.5</ix:nonFraction>&#160;million in other &#8220;Other long-term liabilities.&#8221;</span></div><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzUwNw_d06f2708-8e92-48ee-ba46-63d195898a4b" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_027d6b6d-617d-484f-9ecf-b96b9b28d960"><span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_50fa3eb5-1337-42a0-a46b-a7c0ec1f6782">Accrued liabilities</span></span> consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"><tr><td style="width:1.0%"></td><td style="width:73.035%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.454%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.178%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.454%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.179%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Compensation and related benefits</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:EmployeeRelatedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMi0yLTEtMS0zNjE5OA_e5a597ef-7eca-4554-ac83-29d65d842129">27,813</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:EmployeeRelatedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMi00LTEtMS0zNjE5OA_3a79f1e3-1fc6-46ae-a533-6c3498b32a53">23,165</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Component inventory held by suppliers</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMy0yLTEtMS0zNjE5OA_cca2ee23-8373-4595-879c-0c75d5433945">10,280</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMy00LTEtMS0zNjE5OA_00eb1f11-a844-46dd-8804-9886390e87ee">7,611</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Professional and consulting fees</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:AccruedProfessionalFeesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNC0yLTEtMS0zNjE5OA_4ef1941d-105d-44ff-ad83-365327424026">7,307</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:AccruedProfessionalFeesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNC00LTEtMS0zNjE5OA_e4b5a41d-f849-4f72-b7ee-f68e3a8c6ada">4,819</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current portion of revenue-share payments</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="calx:AccruedRevenueSharePaymentsCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNS0yLTEtMS0zNjE5OA_51ba3f05-dcd5-47c0-a4f2-eec7448d5429">7,210</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="calx:AccruedRevenueSharePaymentsCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNS00LTEtMS0zNjE5OA_7b2545e9-37e5-4fba-bcdd-d18f247c8d0e">4,731</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current portion of warranty and retrofit</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:ProductWarrantyAccrualClassifiedCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNi0yLTEtMS0zNjE5OA_916a4d65-d3a1-421a-b1f6-7ecd742682d9">6,377</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:ProductWarrantyAccrualClassifiedCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNi00LTEtMS0zNjE5OA_e00960ca-3158-456a-9b0a-8fbaa161a6c2">7,076</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Customer advances or rebates</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="calx:AccruedCustomerRebates" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNy0yLTEtMS0zNjE5OA_ebb3a027-4314-466c-9634-24cb9db265b1">5,653</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="calx:AccruedCustomerRebates" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNy00LTEtMS0zNjE5OA_e7c9ce5e-a931-420e-b261-ad1dd421c178">4,742</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Taxes payable</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="calx:TaxesPayableCurrentExcludingAccruedIncomeTaxes" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfOC0yLTEtMS0zNjE5OA_a598b1a4-caa9-48d8-bf80-ce5a1847c2da">4,581</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="calx:TaxesPayableCurrentExcludingAccruedIncomeTaxes" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfOC00LTEtMS0zNjE5OA_55483dcf-1f3f-46a7-9762-abd1c7277f0d">4,251</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Operating leases</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:OperatingLeaseLiabilityCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfOS0yLTEtMS0zNjE5OA_8fe3a963-1b02-4ebb-8e9e-422eb8a7ca08">3,949</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:OperatingLeaseLiabilityCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfOS00LTEtMS0zNjE5OA_232ad442-e156-458f-bf28-9d031617bca1">3,596</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Freight</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="calx:AccruedFreight" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTAtMi0xLTEtMzYxOTg_74a185ed-97d1-4748-90e9-733cf860845e">3,649</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="calx:AccruedFreight" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTAtNC0xLTEtMzYxOTg_fbd8831d-c61c-4e13-9318-1a516ecc1335">3,997</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Business events</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="calx:AccruedBusinessEventsCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTEtMi0xLTEtMzYxOTg_ccd16f92-2a0c-44e3-9dbc-496581b1d247">3,167</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="calx:AccruedBusinessEventsCurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTEtNC0xLTEtMzYxOTg_46a1d4b6-0622-45be-998e-a440a008c081">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Product returns</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="calx:ProductReturnReserveCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTItMi0xLTEtMzYxOTg_c88d26c7-4925-4061-9c7c-357cf3119cea">2,961</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="calx:ProductReturnReserveCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTItNC0xLTEtMzYxOTg_b669a196-c291-473e-807e-aee6cd2546d0">1,836</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:OtherAccruedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTMtMi0xLTEtMzYxOTg_c4ae9886-7e74-459d-b258-8d5281f90dc5">7,527</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:OtherAccruedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTMtNC0xLTEtMzYxOTg_9a245895-de02-41ac-8efb-e1aa33fe7385">5,773</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:AccruedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTQtMi0xLTEtMzYxOTg_16b5a560-49ce-406f-95de-4e6a07bb5a8a">90,474</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:AccruedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTQtNC0xLTEtMzYxOTg_7641501f-724a-49dc-886d-f09821a7023f">71,597</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ4Ng_51a043db-dfbb-4a4a-94e9-105b48130805" escape="true"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Changes in the Company&#8217;s accrued warranty and retrofit liability were as follows (in thousands):</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.076%"><tr><td style="width:1.0%"></td><td style="width:60.044%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.456%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.195%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.456%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.195%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.456%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.198%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance at beginning of year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:ProductWarrantyAccrual" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMi0yLTEtMS0zNjE5OA_f9f8f345-4e41-4505-b86f-8a98e1b6d349">9,594</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231" decimals="-3" name="us-gaap:ProductWarrantyAccrual" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMi00LTEtMS0zNjE5OA_4a2d2cdc-f3c2-472e-87f3-f113341ade83">9,208</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ibe3ffb6b029948b89bd038665fa57d44_I20191231" decimals="-3" name="us-gaap:ProductWarrantyAccrual" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMi02LTEtMS0zNjE5OA_0c8fe711-8a52-43e3-8c26-133a668fae99">7,294</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Provision for warranty and retrofit charged to cost of revenue</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:ProductWarrantyAccrualWarrantiesIssued" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMy0yLTEtMS0zNjE5OA_3df8e2ba-36b7-448a-ace7-46330b291953">1,315</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:ProductWarrantyAccrualWarrantiesIssued" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMy00LTEtMS0zNjE5OA_45a41b4b-7e3b-4c04-be2a-d5a31ace8ca2">3,370</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:ProductWarrantyAccrualWarrantiesIssued" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMy02LTEtMS0zNjE5OA_82b34a65-26a9-4f5c-8115-a292d66f5b3b">5,888</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Utilization of reserve</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:ProductWarrantyAccrualPayments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNC0yLTEtMS0zNjE5OA_76d8f45f-8f8a-4f06-8a0e-ca18e0e7a98c">2,523</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:ProductWarrantyAccrualPayments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNC00LTEtMS0zNjE5OA_2f4497aa-4dbd-4f6d-8854-e8ddb5db7f4b">2,984</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:ProductWarrantyAccrualPayments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNC02LTEtMS0zNjE5OA_e4538c1b-f1a6-4494-870e-8feed6de5fe9">3,974</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance at end of year</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:ProductWarrantyAccrual" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNi0yLTEtMS0zNjE5OA_e1f1c0bf-9bff-4f14-badb-5b777bd4869e">8,386</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:ProductWarrantyAccrual" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNi00LTEtMS0zNjE5OA_69528ec1-15e8-4320-a5df-286021e7b627">9,594</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231" decimals="-3" name="us-gaap:ProductWarrantyAccrual" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNi02LTEtMS0zNjE5OA_39e499aa-e645-4cba-8b2a-2c7dc6449a2f">9,208</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Accrued Restructuring Charges</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company initiated a restructuring plan in 2020 to accelerate the Company&#8217;s platform future and to align with a work-from-anywhere culture. The Company incurred restructuring charges of approximately $<ix:nonFraction unitRef="usd" contextRef="ia8bc5723e8d94237a0acf104c58672c9_D20200101-20201231" decimals="-5" name="us-gaap:RestructuringCharges" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMjk3NA_8b666fc4-ebce-42c1-8aa0-73e1f7c42c66">6.3</ix:nonFraction>&#160;million, consisting of facilities-related charges and severance and other termination related benefits for the year ended December 31, 2020.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In the fourth quarter of 2021, as a result of subleasing the abandoned portion of the Company&#8217;s San Jose headquarters, the Company reversed $<ix:nonFraction unitRef="usd" contextRef="ief29060d1533404bb2cd809c20ef7077_D20211003-20211231" decimals="-5" sign="-" name="us-gaap:RestructuringCharges" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzI1MA_1f5bd372-61d9-4b5c-863e-87c712882d94">0.8</ix:nonFraction>&#160;million in facilities-related charges due to the expected recovery of accrued common areas maintenance fees.</span></div></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">48</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i860abceb944640a9bb007314ea0ce414">As of December&#160;31, 2022, the Company had <ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="INF" name="us-gaap:RestructuringReserve" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTgxMg_60c0faa9-2006-42ef-8655-b8c013788608">no</ix:nonFraction> accrued restructuring charges in the accompanying Consolidated Balance Sheet.</ix:continuation></span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_100"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">5.  <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:CommitmentsAndContingenciesDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzU4NzA_d4db09fc-fad6-4f68-8810-61a4e6e275f9" continuedAt="i6f72f6265a7b4738b6d22a95859f9a7a" escape="true">Commitments and Contingencies</ix:nonNumeric></span></div><ix:continuation id="i6f72f6265a7b4738b6d22a95859f9a7a" continuedAt="i1a630628b20241f3a2f3b36101a39e4a"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Lease Commitments</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company leases office space under non-cancelable operating leases. Certain of the Company&#8217;s operating leases contain renewal options and rent acceleration clauses. <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzU4NjY_ec92ef73-14ef-4c38-97ec-ad7ea5b01154" continuedAt="i64a4fb6ea87040a789645af3f6f599e5" escape="true">Future minimum payments under the non-cancelable operating leases consisted of the following as of December&#160;31, 2022 (in&#160;thousands):</ix:nonNumeric></span></div><div style="margin-top:10pt;text-align:center"><ix:continuation id="i64a4fb6ea87040a789645af3f6f599e5"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"><tr><td style="width:1.0%"></td><td style="width:75.546%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.834%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.320%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ending December 31,</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;Future Minimum Lease Payments</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2023</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzEtMi0xLTEtMzYxOTg_f6b815f3-e663-485e-be9a-5b31a39ff9c1">4,629</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2024</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzItMi0xLTEtMzYxOTg_84748910-ca00-40fb-a6fa-6fc17cc67f15">4,458</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2025</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzMtMi0xLTEtMzYxOTg_c4224e71-e81b-43d2-9d0a-bd1d61c2f941">3,955</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2026 and thereafter</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzQtMi0xLTEtMzYxOTg_06023ec4-9717-44d9-9765-de7fb96d0a92">531</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total future minimum lease payments</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzctMi0xLTEtMzYxOTg_35c190de-20af-4126-aaf3-8cfd49a47128">13,573</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Less imputed interest</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzgtMi0xLTEtMzYxOTg_82ce0a90-c757-459c-875a-ec29e2963e5c">1,182</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 12.25pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:OperatingLeaseLiability" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzktMi0xLTEtMzYxOTg_15d71804-926a-4a74-86f8-c0d246228193">12,391</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></ix:continuation></div><div style="margin-top:1pt"><span><br/></span></div><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="calx:LesseeOperatingLeaseLiabilityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzU4Nzc_79ef7cfd-ebcd-4d4c-8b3f-f74186b51ca5" escape="true"><div style="margin-top:1pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2022, the operating lease liability consisted of the following (in thousands):</span></div><div style="margin-top:11pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:79.398%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.152%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.150%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzAtMC0xLTEtMzYxOTg_0eaed16b-5a85-4f40-8558-3b742d67e1cb">Accrued liabilities - current portion of operating leases</span></span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:OperatingLeaseLiabilityCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzAtMi0xLTEtMzYxOTg_82b2606a-83dc-4c06-ba02-7de3ae841f2f">3,949</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Operating leases</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:OperatingLeaseLiabilityNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzEtMi0xLTEtMzYxOTg_cd39ec51-691f-47d3-8405-2bd895c287d2">8,442</ix:nonFraction>&#160;</span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:OperatingLeaseLiability" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzItMi0xLTEtMzYxOTg_dfb058c2-b2c1-4374-9bcf-1da90440adc9">12,391</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-bottom:5pt;margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company leases its headquarters office space in San Jose, California under a lease agreement that expires in December 2025. The future minimum lease payments under the lease are $<ix:nonFraction unitRef="usd" contextRef="ia1b2dc7d18c14276b64719107b47aec1_I20221231" decimals="-5" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzYxMg_7d706461-5a7c-4db2-a862-3dc75791e1d3">7.3</ix:nonFraction> million and are included in the table for the year ended December&#160;31, 2022 above.</span></div><div style="margin-bottom:5pt;margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The above tables also include future minimum lease payments for the Company's office facilities in Petaluma, California; Plymouth, Minnesota; Richardson, Texas; Bangalore, India; Nanjing, China; and West Jordan, Utah, which expire at various dates through 2027.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In November 2021, the Company entered into a sublease for a portion of the San Jose headquarters office space that was previously abandoned. The sublease commenced in August 2022 for a term of <ix:nonNumeric contextRef="id212028f7d3447bc991b7b183b10250a_I20211130" name="us-gaap:LessorOperatingLeaseTermOfContract" format="ixt-sec:durmonth" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE0NzE_cb841f41-6fee-4423-92de-620ec2f325b2">39</ix:nonNumeric> months. The Company received $<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-5" name="us-gaap:SubleaseIncome" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzEwOTk1MTE2MzQzNzM_57354fb8-f318-4255-bc41-8d8eb1b273ff">0.3</ix:nonFraction>&#160;million in sublease income in 2022. <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzU4Njk_fd6356b8-7ca6-4772-9bc1-be51a3fff4f6" continuedAt="i93e4e343d21d4b5ea9bb1b02e939ad4c" escape="true">Future minimum payments consisted of the following as of December&#160;31, 2022 (in&#160;thousands):</ix:nonNumeric></span></div><div style="margin-top:10pt;text-align:center"><ix:continuation id="i93e4e343d21d4b5ea9bb1b02e939ad4c"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"><tr><td style="width:1.0%"></td><td style="width:75.546%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.834%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.320%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ending December 31,</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;Future Minimum Sublease Payments</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2023</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTplMGY5MGQxZDM5ZjA0ODA1OWEyM2NhN2VmN2E3MmU4MC90YWJsZXJhbmdlOmUwZjkwZDFkMzlmMDQ4MDU5YTIzY2E3ZWY3YTcyZTgwXzItMi0xLTEtMzYxOTg_cf094f6f-c0a6-47e8-acbd-7937a16ba92e">750</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2024</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:LessorOperatingLeasePaymentsToBeReceivedTwoYears" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTplMGY5MGQxZDM5ZjA0ODA1OWEyM2NhN2VmN2E3MmU4MC90YWJsZXJhbmdlOmUwZjkwZDFkMzlmMDQ4MDU5YTIzY2E3ZWY3YTcyZTgwXzMtMi0xLTEtMzYxOTg_07a45aac-f0bf-4f26-8dca-59c81eb9f01c">773</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2025</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:LessorOperatingLeasePaymentsToBeReceivedThreeYears" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTplMGY5MGQxZDM5ZjA0ODA1OWEyM2NhN2VmN2E3MmU4MC90YWJsZXJhbmdlOmUwZjkwZDFkMzlmMDQ4MDU5YTIzY2E3ZWY3YTcyZTgwXzQtMi0xLTEtMzYxOTg_a1340de1-3296-40f6-99fd-feebc2770670">661</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total future minimum sublease payments</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:LessorOperatingLeasePaymentsToBeReceived" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTplMGY5MGQxZDM5ZjA0ODA1OWEyM2NhN2VmN2E3MmU4MC90YWJsZXJhbmdlOmUwZjkwZDFkMzlmMDQ4MDU5YTIzY2E3ZWY3YTcyZTgwXzUtMi0xLTEtMzYxOTg_c16988e0-dc45-452c-a38e-66da8e445c08">2,184</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></ix:continuation></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The weighted average discount rate for the Company&#8217;s operating leases as of December&#160;31, 2022 was <ix:nonFraction unitRef="number" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="3" name="us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE2NDM_1f11f47d-c1f7-4a25-a3c4-6e7d03eecb92">6.1</ix:nonFraction>%. The weighted average remaining lease term as of December&#160;31, 2022 was <ix:nonNumeric contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" name="us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE3MDI_38edc2aa-7d8e-4051-9e3f-0ecf14a3206f">3.0</ix:nonNumeric> years.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">For the years ended December&#160;31, 2022, 2021 and 2020, total rent expense of the Company was $<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-5" name="us-gaap:OperatingLeaseCost" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE3ODU_c625c45e-d5a1-4517-a172-469d300f3e21">4.6</ix:nonFraction> million, $<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-5" name="us-gaap:OperatingLeaseCost" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE3ODk_cf877d75-deb4-4958-933c-f571b597423c">4.1</ix:nonFraction> million and $<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-5" name="us-gaap:OperatingLeaseCost" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE3OTY_870a7afd-efcf-4a26-a641-78846a08279a">4.0</ix:nonFraction> million, respectively. Cash paid within operating cash flows for operating leases was $<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-5" name="us-gaap:OperatingLeasePayments" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzEwOTk1MTE2MzQzNDU_d5e91cb3-e7bc-4222-a130-ce61dc63996e">4.5</ix:nonFraction>&#160;million, $<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-5" name="us-gaap:OperatingLeasePayments" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE4Nzc_b9b949c7-531d-465d-9ab1-327669ab38d2">3.9</ix:nonFraction> million and $<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-5" name="us-gaap:OperatingLeasePayments" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzEwOTk1MTE2MzQzNTk_417f8dfb-718b-43e3-b227-a1e39444f461">3.8</ix:nonFraction>&#160;million for years ended December&#160;31, 2022, 2021 and 2020, respectively.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Purchase Commitments</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s CMs and ODMs place orders for certain component inventory in advance based upon the Company&#8217;s build forecasts in order to reduce manufacturing lead times and ensure adequate component supply. The components are used by the CMs and ODMs to build the products included in the build forecasts. The Company generally does not take ownership of the components held by CMs and ODMs. The Company places purchase orders with its CMs and ODMs in order to fulfill its monthly finished product inventory requirements. The Company incurs a liability when the CMs and ODMs convert the component inventory to a finished product and takes ownership of the finished goods inventory. In the event of termination of services with a manufacturing partner, the Company has purchased, and may be required to purchase in the future, certain of the </span></div></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">49</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><ix:continuation id="i1a630628b20241f3a2f3b36101a39e4a"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">remaining components inventory held by the CM or ODM as well as any outstanding orders pursuant to the contractual provisions with such CM or ODM. As of December&#160;31, 2022 and 2021, the Company had approximately $<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-5" name="us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzI5NTQ_c459e143-0972-49c9-b502-8be1a49f5544">340.6</ix:nonFraction> million and $<ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-5" name="us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzI5NjE_8f04faf1-b173-4737-9f4e-5ad599f8f0ed">247.3</ix:nonFraction>&#160;million, respectively, of outstanding purchase commitments for inventories to be delivered by its suppliers, including CMs and ODMs.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company has from time to time, and subject to certain conditions, reimbursed certain suppliers for component inventory purchases when this inventory has been rendered excess or obsolete, for example due to manufacturing and engineering change orders resulting from design changes, manufacturing discontinuation of products by its suppliers, or in cases where the Company has committed inventory levels that greatly exceed projected demand. The estimated excess and obsolete inventory liabilities related to such manufacturing and engineering change orders and other factors, which are included in accrued liabilities in the accompanying Consolidated Balance Sheets, were $<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-5" name="calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzM3ODk_e2631fa7-b8f3-4cbf-94f3-6585b9fa212f">10.3</ix:nonFraction> million and $<ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-5" name="calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzM3OTY_e75a61d8-5281-48d1-8464-0c01ada82e0e">7.6</ix:nonFraction> million as of December&#160;31, 2022 and 2021, respectively. The Company records the related charges in cost of systems revenue in its Consolidated Statements of Comprehensive Income.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Litigation</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">From time to time, the Company is involved in various legal proceedings arising from the normal course of business activities. The Company is not currently a party to any legal proceedings that, if determined adversely to the Company, in management&#8217;s opinion, are currently expected to individually or in the aggregate have a material adverse effect on the Company&#8217;s business, operating results or financial condition taken as a whole.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Indemnifications</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company from time to time enters into contracts that require it to indemnify various parties against claims from third parties. These contracts primarily relate to (i)&#160;certain real estate leases, under which the Company may be required to indemnify property owners for environmental and other liabilities, and other claims arising from the Company&#8217;s use of the applicable premises, (ii)&#160;agreements with the Company&#8217;s officers, directors and certain employees, under which the Company may be required to indemnify such persons for liabilities arising out of their relationship with the Company, (iii)&#160;contracts under which the Company may be required to indemnify customers against third-party claims that a Company product infringes a patent, copyright or other intellectual property right and (iv)&#160;agreements under which the Company may be required to indemnify the counterparty for certain claims that may be brought against them arising from the Company&#8217;s acts or omissions with respect to the transactions contemplated by such agreements.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Because any potential obligation associated with these types of contractual provisions are not quantified or stated, the overall maximum amount of the obligation cannot be reasonably estimated. Historically, the Company has not been required to make payments under these obligations, and no liabilities have been recorded for these obligations in the accompanying Consolidated Balance Sheets.</span></div></ix:continuation><div id="i1dda958eb66f4ab38aa84c917304ece3_103"></div><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">6.  <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ShareholdersEquityAndShareBasedPaymentsTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDYx_fb9abb14-ca80-4f7a-af95-b89fdccb2d6b" continuedAt="ic8204176eabc4318aa2f79f281d1f988" escape="true">Stockholders&#8217; Equity </ix:nonNumeric></span></div><ix:continuation id="ic8204176eabc4318aa2f79f281d1f988" continuedAt="ia9ce6f0d728241dfb8c3a7156d7c90c5"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Preferred Stock</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Board of Directors has the authority, without a further vote of the stockholders, to designate and issue up to <ix:nonFraction unitRef="shares" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="INF" name="us-gaap:PreferredStockSharesAuthorized" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzE2Mg_a41d7077-3872-4311-b6db-2cb7b1959931"><ix:nonFraction unitRef="shares" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="INF" name="us-gaap:PreferredStockSharesAuthorized" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzE2Mg_be6ae076-d8d3-4ccf-9fcb-f376c3f37131">5.0</ix:nonFraction></ix:nonFraction> million shares of preferred stock in one or more series and to fix the rights, preferences, privileges and restrictions thereof. These rights, preferences and privileges could include dividend rights, conversion rights, voting rights, terms of redemption, liquidation preferences, sinking fund terms and the number of shares constituting any series or the designation of such series, any or all of which may be greater than the rights of common stock. The issuance of the Company&#8217;s preferred stock could adversely affect the voting power of holders of common stock and the likelihood that such holders will receive dividend payments and payments upon liquidation. In addition, the issuance of preferred stock could have the effect of delaying, deferring or preventing a change in control of the Company or other corporate action. Since the Company&#8217;s initial public offering, the Board of Directors has not designated any rights, preference or powers of any preferred stock, and <ix:nonFraction unitRef="shares" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="INF" name="us-gaap:PreferredStockSharesIssued" format="ixt:fixed-zero" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMzU_2e89c7dd-7479-46cf-bacd-53b34b28f830"><ix:nonFraction unitRef="shares" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="INF" name="us-gaap:PreferredStockSharesOutstanding" format="ixt:fixed-zero" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMzU_44134196-220e-4e7f-adc5-32c791377611"><ix:nonFraction unitRef="shares" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="INF" name="us-gaap:PreferredStockSharesOutstanding" format="ixt:fixed-zero" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMzU_8125353f-1c57-4ac6-a8c9-739c11c3e91f"><ix:nonFraction unitRef="shares" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="INF" name="us-gaap:PreferredStockSharesIssued" format="ixt:fixed-zero" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMzU_b5acc682-1add-4af0-a2b3-a6fd8860275b">no</ix:nonFraction></ix:nonFraction></ix:nonFraction></ix:nonFraction> shares of preferred stock have been issued.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Common Stock</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Holders of the Company&#8217;s common stock are entitled to receive dividends, if any, as may be declared from time to time by the Board of Directors out of legally available funds. <ix:nonFraction unitRef="usdPerShare" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="INF" name="us-gaap:CommonStockDividendsPerShareDeclared" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNzE_c0d0755d-632b-4f61-a63d-75a14dbc4f73">No</ix:nonFraction> dividends have been declared or paid as of December&#160;31, 2022.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In August 2020, the Company completed an underwritten public offering of <ix:nonFraction unitRef="shares" contextRef="i7fadbf2c253d413a88bde1b78e167eca_D20200801-20200831" decimals="INF" name="us-gaap:SaleOfStockNumberOfSharesIssuedInTransaction" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzE5MDA_ff836926-657a-4f18-adc1-124b9d531ead">3,220,000</ix:nonFraction> shares of its common stock at $<ix:nonFraction unitRef="usdPerShare" contextRef="ia82b2d49648943eaa5310ec5fb3becca_I20200831" decimals="2" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzE5MzM_4b25d1ca-7ebb-4fd4-8d23-3a4e0ffbde7d">20.00</ix:nonFraction> per share, including a full exercise by the underwriters of their option to purchase an additional <ix:nonFraction unitRef="shares" contextRef="i91bded7562bb4301ad3b554b40d54850_D20200801-20200831" decimals="INF" name="us-gaap:SaleOfStockNumberOfSharesIssuedInTransaction" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzIwMzU_cd024d7f-8934-49b9-89fe-3363da17bf55">420,000</ix:nonFraction> shares of Common Stock, resulting in net proceeds of $<ix:nonFraction unitRef="usd" contextRef="i91bded7562bb4301ad3b554b40d54850_D20200801-20200831" decimals="-5" name="us-gaap:SaleOfStockConsiderationReceivedOnTransaction" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzIwOTE_290174e1-8cb5-4800-8678-a052eca4bdc7">60.1</ix:nonFraction>&#160;million, after deducting the underwriting discount and expenses paid by the Company.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Stock Repurchase Program</span></div><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In July 2022, the Company&#8217;s Board of Directors authorized a <ix:nonNumeric contextRef="i505f47a2e1ed4f3195b453dfbe6a64f4_D20220701-20220731" name="us-gaap:StockRepurchaseProgramPeriodInForce1" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0MzM_d139e841-9587-45a7-b5c9-a46941a6d427">one-year</ix:nonNumeric> stock repurchase program for up to $<ix:nonFraction unitRef="usd" contextRef="idc3cb693fe5140938ac10dd90b12e4b3_I20220731" decimals="-5" name="us-gaap:StockRepurchaseProgramAuthorizedAmount1" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0MzU_1e9aea67-0793-4586-bdf0-f07ee7ba604c">100</ix:nonFraction>&#160;million of the Company&#8217;s common stock. Under the repurchase program, repurchases can be made from time to time using a variety of </span></div></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">50</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><ix:continuation id="ia9ce6f0d728241dfb8c3a7156d7c90c5" continuedAt="if20be271fd5c4b0cad8f9d1a01c5b225"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">methods, which may include open market purchases, privately negotiated transactions or otherwise, all in accordance with the rules of the SEC and other applicable legal requirements. The specific timing, price and size of the purchases will depend on prevailing stock prices, general economic and market conditions, and other considerations consistent with the Company&#8217;s capital allocation strategy. The repurchase program does not obligate the Company to acquire a particular amount of common stock, and the repurchase program may be suspended or discontinued at any time at the Company&#8217;s discretion. During the year ended December&#160;31, 2022, no repurchases were made under the program.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Equity Incentive Plans</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Stock Options </span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">At the Company&#8217;s 2019 annual meeting of stockholders, the stockholders approved the 2019 Equity Incentive Award Plan (the &#8220;2019 Plan&#8221;). The 2019 Plan supersedes and replaces the 2010 Equity Incentive Award Plan (the &#8220;2010 Plan&#8221;) and preceding plans. The terms and conditions of the 2010 Plan will continue to govern any outstanding awards granted under the 2010 Plan.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Employees and consultants of the Company, its subsidiaries and affiliates and the Company&#8217;s Board of Directors members are eligible to receive awards under the 2019 Plan. The 2019 Plan provides for the grant of stock options, stock appreciation rights, restricted stock, restricted stock units or other stock or cash-based awards and dividend equivalents to eligible individuals.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">At the Company&#8217;s 2022 annual meeting of stockholders, the stockholders approved an increase in the number of shares of common stock issuable under the 2019 Plan by <ix:nonFraction unitRef="shares" contextRef="i3cbfffa9694a42a389d948ddc37f1e20_I20221231" decimals="-5" name="calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQwNzA_892717ad-1d54-4187-8571-1f24d586b617">1.5</ix:nonFraction>&#160;million shares. As of December&#160;31, 2022, there were <ix:nonFraction unitRef="shares" contextRef="i3cbfffa9694a42a389d948ddc37f1e20_I20221231" decimals="-5" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQxMDI_4f2622d0-7e1a-4163-90de-0c3bf2d63f41">6.0</ix:nonFraction> million shares available for issuance under the 2019 Plan. </span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock options granted under the 2019 Plan are granted at a price not less than <ix:nonFraction unitRef="number" contextRef="i41eb5021bb2b41b5b265a980031bec90_D20220101-20221231" decimals="2" name="calx:MinimumExercisePriceOfStockOptionPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQyMzY_75220fe0-0a11-4cab-b34f-03681a7af0f2">100</ix:nonFraction>% of the fair market value of the common stock on the date of grant. Stock options issued under the 2019 Plan generally vest <ix:nonFraction unitRef="number" contextRef="i8c139b1f6d274d5e8a525134045a6df8_D20200101-20201231" decimals="INF" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQzNjI_b07e076d-cafe-4fa9-9ce0-e873f751c763">25</ix:nonFraction>%&#160;on the first anniversary of the vesting commencement date and on a quarterly basis thereafter for a period of an additional <ix:nonNumeric contextRef="i75d90d403aa54a2294076893730c0ec6_D20200101-20201231" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQ0ODk_b7e8049a-5a9a-4115-9c26-2071a25e0c9f">three years</ix:nonNumeric>. The options have a maximum term of <ix:nonNumeric contextRef="i41eb5021bb2b41b5b265a980031bec90_D20220101-20221231" name="calx:ContractualTermStockOptions" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQ1Mjg_99dc242e-7faa-4df7-8be8-69974e806a48">ten years</ix:nonNumeric>.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In February 2021, PSOs exercisable for up to an aggregate of <ix:nonFraction unitRef="shares" contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzU5MzQ_10ed242e-d302-451e-9bd2-122d05f61b01">0.7</ix:nonFraction>&#160;million shares of common stock were granted to certain Company executives with a grant date exercise price of $<ix:nonFraction unitRef="usdPerShare" contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzYwMzk_a55ea2f5-eba7-4d52-b2cf-d0887c754f5d">36.74</ix:nonFraction> per share. The actual number of shares earned is contingent upon achievement of annual corporate financial targets for bookings and non-GAAP net income for 2021 (collectively, the &#8220;2021 Performance Targets&#8221;) during the <ix:nonNumeric contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDgw_780b1b31-972a-40c5-b66a-a539790fb81a">one-year</ix:nonNumeric> performance period. Under the 2021 Performance Targets, if the non-GAAP net income is below <ix:nonFraction unitRef="number" contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228" decimals="INF" name="calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzYzNjE_bb4d6643-9808-4c27-a94e-946befb519a7">80</ix:nonFraction>% of target or bookings are below <ix:nonFraction unitRef="number" contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228" decimals="INF" name="calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzYzOTY_32eafe13-2625-46c8-9b57-6d33120c9127">90</ix:nonFraction>% of target, <ix:nonFraction unitRef="shares" contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228" decimals="INF" name="calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY0MTA_6d184a44-3687-4495-9f8f-f7e4326ae84c">no</ix:nonFraction> shares would be awarded. From this base, shares are awarded on a <ix:nonFraction unitRef="number" contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228" decimals="INF" name="calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY0Nzg_ac1cca95-8772-4799-9357-181f0b2ae50b">50</ix:nonFraction>% weighting for both non-GAAP net income and bookings up to <ix:nonFraction unitRef="number" contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228" decimals="INF" name="calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY1Mzk_7807662d-1feb-428c-a24f-8f76e915f9cc">100</ix:nonFraction>% for each 2021 Performance Target using a sliding scale.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In February 2022, the Compensation Committee of the Company&#8217;s Board of Directors certified the results against the 2021 Performance Targets and awarded <ix:nonFraction unitRef="number" contextRef="ifc83d7d9ef314c2da18ad45d02064e43_I20220228" decimals="2" name="calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY3NTA_163a32c7-0722-4b1e-ae25-8e1605d7cc9f">97</ix:nonFraction>% of PSOs subject to the <ix:nonNumeric contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228" name="calx:PerformanceTargetsServicesConditionPeriod" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDkw_917d1db9-f00b-4414-b029-f3de3905762a">four-year</ix:nonNumeric> services condition. As such, <ix:nonFraction unitRef="number" contextRef="i965de145a5b34dcd8fa276603435fdac_D20210201-20210228" decimals="INF" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY4MTM_27f0dcf1-5da5-4ee8-934b-365a33594379">25</ix:nonFraction>% of the awarded shares of the PSOs were vested on that date, and the remaining <ix:nonFraction unitRef="number" contextRef="i700305bde84145bb849464dd58867c37_D20210201-20210228" decimals="INF" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY4OTQ_528e607c-da54-47b4-b6ae-8a9fa3e63c8c">75</ix:nonFraction>% of the shares of common stock will vest in substantially equal quarterly installments over the subsequent <ix:nonNumeric contextRef="i700305bde84145bb849464dd58867c37_D20210201-20210228" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" format="ixt-sec:durmonth" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzcwMDA_ee82c4ed-dc9a-44e0-9edf-c1afb03fa93f">36</ix:nonNumeric> months, subject to the executive&#8217;s continuous service with the Company through the respective vesting dates. Stock-based compensation expense of $<ix:nonFraction unitRef="usd" contextRef="i638345f07d274c7894c3feb7fb3b1042_D20220101-20221231" decimals="-5" name="us-gaap:ShareBasedCompensation" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzcxNDE_19b77821-1456-4c93-881b-221310fa26ca">3.6</ix:nonFraction>&#160;million and $<ix:nonFraction unitRef="usd" contextRef="i541d20d065cc4fd69f959b3cae672349_D20210101-20211231" decimals="-5" name="us-gaap:ShareBasedCompensation" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0NDk_293228c4-930b-4ecc-b8c9-f19dc765a67e">6.3</ix:nonFraction>&#160;million was recognized for the years ended December&#160;31, 2022 and 2021, respectively, related to these awards. Also, in February 2022, the Compensation Committee granted PSOs exercisable for up to an aggregate of <ix:nonFraction unitRef="shares" contextRef="ida3289d8c97f4feda1965fdc60834811_D20220201-20220228" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0NjM_6433d6a4-d252-466d-a670-d08231b5b855">0.7</ix:nonFraction>&#160;million shares of common stock to certain Company executives with a grant date exercise price of $<ix:nonFraction unitRef="usdPerShare" contextRef="ida3289d8c97f4feda1965fdc60834811_D20220201-20220228" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0NzY_70b3b7f9-5641-4161-b4df-293a314b017b">55.96</ix:nonFraction> per share, using the same plan design as 2021 but with 2022 annual corporate financial targets for bookings and non-GAAP net operating income (collectively, the &#8220;2022 Performance Targets&#8221;).</span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:112%">In February 2023, the Compensation Committee of the Company&#8217;s Board of Directors certified the results against the 2022 Performance Targets and awarded <ix:nonFraction unitRef="number" contextRef="i295a35bf54c94432a53d75c53f7fd8cb_I20230228" decimals="2" name="calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0ODQ_567baf9d-7e06-4380-bd7a-be637bd0742a">100</ix:nonFraction>% of PSOs subject to the <ix:nonNumeric contextRef="if0e6bad883de4fcf86c4c0bdd31069fb_D20230201-20230228" name="calx:PerformanceTargetsServicesConditionPeriod" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk1MzU_1fcb54d3-e4b4-40aa-9ff5-da3abe3ab45e">four-year</ix:nonNumeric> service condition. As such, <ix:nonFraction unitRef="number" contextRef="iec5297cc8cee403da61498dad383a323_D20230201-20230228" decimals="INF" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk1MDM_33133a5d-928f-498a-b4c0-cc3aba194e97">25</ix:nonFraction>% of the awarded shares of the PSOs were vested on that date, and the remaining <ix:nonFraction unitRef="number" contextRef="ic11cc38580b54c38bdedf1d2424db347_D20230201-20230228" decimals="INF" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk1MDg_d89254c9-ff1b-4a2c-82e1-cdf1312ae59f">75</ix:nonFraction>% of the shares of common stock will vest in substantially equal quarterly installments over the subsequent <ix:nonNumeric contextRef="ic11cc38580b54c38bdedf1d2424db347_D20230201-20230228" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" format="ixt-sec:durmonth" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk1MTU_5b97a167-25a1-4459-b3c1-f886361b5209">36</ix:nonNumeric> months, subject to the executive&#8217;s continuous service with the Company through the respective vesting dates. Stock-based compensation expense of $<ix:nonFraction unitRef="usd" contextRef="if3854c3da7554041bf128b38014a78ec_D20220101-20221231" decimals="-5" name="us-gaap:ShareBasedCompensation" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk1MjE_6efeca8c-0c9f-4023-a984-2f8bdfb04830">10.1</ix:nonFraction>&#160;million was recognized for the year ended December&#160;31, 2022 related to these awards.</span></div></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">51</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><ix:continuation id="if20be271fd5c4b0cad8f9d1a01c5b225" continuedAt="i265aa42c625f45bb82da385e63418be7"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDU1_85c94df3-fccd-487a-b282-7ac5bed84e50" escape="true"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the stock option activity under the Company&#8217;s equity incentive plans (in thousands, except per share data):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:90.058%"><tr><td style="width:1.0%"></td><td style="width:42.406%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.585%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.237%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.585%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.237%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.585%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.237%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.585%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.243%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Weighted-</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Average</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Weighted-</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Remaining</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Average</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Contractual</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Aggregate</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Number of</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Exercise Price</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Life</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Intrinsic</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline">Stock Options</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Shares</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Per Share</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">(in years)</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;&#160;&#160;Value </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:5.2pt;font-weight:700;line-height:100%;position:relative;top:-2.8pt;vertical-align:baseline">(1)</span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Outstanding as of December 31, 2021</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzYtMi0xLTEtMzYxOTg_1145cee9-aa4a-4d11-8a7e-2a5f026a9f3b">6,648</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzYtNC0xLTEtMzYxOTg_c54c8b1b-b033-4c63-b0e1-83c31c0e25f7">17.46</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzctMi0xLTEtMzYxOTg_a5ee0d53-e542-4bca-b00d-ce88af58fc2c">2,423</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzctNC0xLTEtMzYxOTg_5577b267-edcc-4f99-bb42-dfad445607ec">56.04</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Exercised</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="shares" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzgtMi0xLTEtMzYxOTg_aa8890c0-4f07-4f50-833b-229a08bb6c09">721</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzgtNC0xLTEtMzYxOTg_91f2378c-f8bb-4dd7-bf4b-4f6b4a0e54d1">9.28</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Canceled</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="shares" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzktMi0xLTEtMzYxOTg_6911c884-442e-4b27-82cf-07af2a3ec25c">63</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzktNC0xLTEtMzYxOTg_2a842dda-8344-44c4-ba51-85fabc3d46b9">35.74</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Outstanding as of December 31, 2022</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzExLTItMS0xLTM2MTk4_99284bd4-6a10-470f-9daa-128ee16cc0e3">8,287</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzExLTQtMS0xLTM2MTk4_3d9de76b-e63b-4cca-b1fd-b2a396165d0b">29.31</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzExLTYtMS0xLTM2MTk4_dfc6d9ab-3542-4515-a1c6-094e40b9fef5">7.5</ix:nonNumeric></span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzExLTgtMS0xLTM2MTk4_ae9df066-7d99-4af6-87ed-278291878c94">325,828</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Vested and expected to vest as of&#160;December 31, 2022</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEyLTItMS0xLTM2MTk4_8a74d635-8bb7-4a17-be8e-48978fcc5e03">8,028</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEyLTQtMS0xLTM2MTk4_21f49a73-8125-4a04-b746-11c8134f75b7">28.64</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEyLTYtMS0xLTM2MTk4_2de17dd9-33ad-4e77-99bc-e2bd8333cfcb">7.4</ix:nonNumeric></span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEyLTgtMS0xLTM2MTk4_4392676f-64de-45cc-a96f-33250736bf08">321,015</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Options exercisable as of December 31, 2022</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEzLTItMS0xLTM2MTk4_05a1ff50-345d-454c-a65d-da7dd8e5b78f">4,010</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEzLTQtMS0xLTM2MTk4_3ef69f85-0565-4793-9526-4f436c523719">14.04</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEzLTYtMS0xLTM2MTk4_b417d61c-4270-4efa-a062-cde65880835d">6.1</ix:nonNumeric></span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEzLTgtMS0xLTM2MTk4_92dcee82-ac17-4235-82e7-ef693be10245">218,143</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:underline">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="27" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:112%">(1) Amounts represent the difference between the exercise price and the fair market value of common stock at December 31, 2022 of $<ix:nonFraction unitRef="usdPerShare" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="2" name="calx:SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzE1LTAtMS0xLTM2MTk4L3RleHRyZWdpb246MmMyZWRmMWU0MjRhNDZlM2I2ZWY1NWExNDRjZjU5MmFfMTM1_33986a18-a7f4-4f51-ab93-14875e2bba5d">68.43</ix:nonFraction> per share for all &#8220;in-the-money&#8221; options outstanding.</span></div></td></tr></table></div></ix:nonNumeric><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">During the years ended December&#160;31, 2022, 2021 and 2020, total intrinsic value of stock options exercised was $<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-5" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc0NzI_8e300819-9db3-41fc-8afe-298af61c26bd">31.0</ix:nonFraction> million, $<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-5" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc0NzY_4272bd93-f439-480f-bb44-795cba9eb89b">59.6</ix:nonFraction>&#160;million and $<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-5" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc0ODM_0b671b7f-1948-4e0e-a2f8-a1ec267ff0ff">6.7</ix:nonFraction>&#160;million, respectively. Cash received from employee stock option exercises in 2022, 2021 and 2020 was $<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-5" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc1OTU_7e965b3c-3b1d-4ccb-8a4d-a96d0f8f65a3">6.7</ix:nonFraction>&#160;million, $<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-5" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc1OTk_d16c52c4-0163-4abc-8b7d-39f0eddf54ad">11.2</ix:nonFraction>&#160;million and $<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-5" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc2MDY_49acdfce-6035-4376-9533-9130215ecb59">0.9</ix:nonFraction>&#160;million, respectively.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Employee Stock Purchase Plans</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The ESPP allows eligible employees to purchase shares of the Company&#8217;s common stock through payroll deductions of up to <ix:nonFraction unitRef="number" contextRef="iee534fe4989d4adfa556c7ec64860bfa_I20221231" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc3NzQ_50f09694-8233-4fe2-9846-2d0dddbd2e01">15</ix:nonFraction>% of their eligible compensation subject to certain Internal Revenue Code limitations. In addition, participants may purchase up to <ix:nonFraction unitRef="shares" contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc5MTM_d9786033-d5c6-48b7-a1a9-d9194d1270c4">2,000</ix:nonFraction> shares of common stock in each offering period.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The offering periods under the ESPP are <ix:nonFraction unitRef="period" contextRef="iee534fe4989d4adfa556c7ec64860bfa_I20221231" decimals="INF" name="calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods" format="ixt-sec:numwordsen" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzgwMDQ_738fc667-cb35-4521-9577-07ffb86281be">two</ix:nonFraction> <ix:nonNumeric contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231" name="calx:SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDcx_b7cb3f20-f247-4ba8-a63f-0b540ceb8551">six-month</ix:nonNumeric> offering periods from August 15</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> through February 14</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> and February 15</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> through August 14</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> of each year. The price of common stock purchased under the ESPP is <ix:nonFraction unitRef="number" contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231" decimals="INF" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzE2NDkyNjc0NTUxNzY_4127732e-bec6-4ffe-a31e-b8a2189b8147">85</ix:nonFraction>% of the lower of the fair market value of the common stock on the commencement date and the end date of each <ix:nonNumeric contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231" name="calx:SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDY0_c640f894-ec39-4500-9557-0d40c6410220">six-month</ix:nonNumeric> offering period. At the Company&#8217;s 2022 annual meeting of stockholders, the stockholders approved an increase in the number of shares of common stock issuable under the ESPP by <ix:nonFraction unitRef="shares" contextRef="i880c5d0fdabc49049e2803cb35fd9265_D20190501-20190531" decimals="-5" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg0NzU_e01161a9-58d0-4032-b720-ade3fc14cc95">1.3</ix:nonFraction>&#160;million shares. The total shares authorized for issuance under the ESPP increased from <ix:nonFraction unitRef="shares" contextRef="i0ec7c77a75e44d88b5272edccf8226e0_I20190430" decimals="-5" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg1NTc_dade7f94-bd7d-46a8-928e-d31f913fcbaf">11.1</ix:nonFraction>&#160;million shares to <ix:nonFraction unitRef="shares" contextRef="if0e209b492c749879687a6547794124c_I20190531" decimals="-5" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg1NzA_1b636a67-78a4-4e0e-adad-37ad07dcb797">12.4</ix:nonFraction>&#160;million shares. As of December&#160;31, 2022, there were <ix:nonFraction unitRef="shares" contextRef="iee534fe4989d4adfa556c7ec64860bfa_I20221231" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg2MDI_ff171273-191b-49b0-b0a8-544157440fad">4.7</ix:nonFraction>&#160;million shares available for issuance under the ESPP. During the year ended December&#160;31, 2022, <ix:nonFraction unitRef="shares" contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231" decimals="-5" name="us-gaap:StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg2Nzc_dbdd4f29-9022-4e09-922f-bc63e12b1ac3">0.2</ix:nonFraction>&#160;million shares were purchased under the ESPP. As of December&#160;31, 2022, unrecognized stock-based compensation expense of $<ix:nonFraction unitRef="usd" contextRef="iee534fe4989d4adfa556c7ec64860bfa_I20221231" decimals="-5" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg3Nzc_9450d4fa-2c60-43ec-b808-762886f6ddc4">0.4</ix:nonFraction>&#160;million related to the ESPP is expected to be recognized over a remaining service period of <ix:nonNumeric contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg4NjQ_6c4a8527-336e-4f58-9f7f-5f21b5582c50">0.1</ix:nonNumeric> years.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The NQ ESPP allows eligible employees to purchase shares of the Company&#8217;s common stock through payroll deductions of up to <ix:nonFraction unitRef="number" contextRef="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231" decimals="INF" name="calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg5OTc_91ae3c23-ad49-4de2-ac91-e61f2e8186d2">25</ix:nonFraction>% of their eligible compensation. Eligible employees have the right to (a) purchase the maximum number of whole shares of common stock that can be purchased with the elected payroll deductions during each offering period for which the employee is enrolled at a purchase price equal to the closing price of the Company&#8217;s common stock on the last day of such offering period and (b) receive an equal number of shares of the Company&#8217;s common stock that are subject to a risk of forfeiture in the event the employee terminates employment within the <ix:nonNumeric contextRef="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231" name="calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzk1NDM_7d9fbd9b-0dd9-46fb-85ab-d56c24d078d1">one year</ix:nonNumeric> period immediately following the purchase date. Beginning in the second quarter of 2022, the NQ ESPP provides quarterly offering periods from May 8</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> through August 7</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">, August 8</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> through November 7</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">, November 8</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> through February 7</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> and February 8</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> through May 7</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">of each year. A transition period began on May 15</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> and ended on August 7</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">. At the Company&#8217;s 2022 annual meeting of stockholders, the stockholders approved an increase in the number of shares of common stock issuable under the NQ ESPP by <ix:nonFraction unitRef="shares" contextRef="i5b465428849c4e708a3b9d04506880c1_D20200501-20200531" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzk4OTE_8e627c2b-75a4-4912-aa90-3587cac763e1">0.8</ix:nonFraction>&#160;million shares. The maximum number of shares of common stock currently authorized for issuance under the NQ ESPP is <ix:nonFraction unitRef="shares" contextRef="i26ca0d92b2424298b0bcea3c569b00ba_I20200531" decimals="INF" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMDAy_4beae738-d22f-4b41-8321-9b8047dfd865">6.3</ix:nonFraction>&#160;million shares, with a maximum of <ix:nonFraction unitRef="shares" contextRef="i26ca0d92b2424298b0bcea3c569b00ba_I20200531" decimals="INF" name="calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMDMx_a9878fcd-34f7-442f-890b-be50fbfb8da5">0.3</ix:nonFraction>&#160;million shares allocated per purchase period. As of December&#160;31, 2022, there were <ix:nonFraction unitRef="shares" contextRef="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231" decimals="-5" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMDkz_014af307-e74c-4696-8e1a-3878e58614ce">3.0</ix:nonFraction>&#160;million shares available for issuance under the NQ ESPP, including the stockholder-approved <ix:nonFraction unitRef="shares" contextRef="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231" decimals="-5" name="calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMTgw_7133315d-c3d2-4dc8-8b78-c53362f5b50b">0.8</ix:nonFraction>&#160;million share increase. During the year ended December&#160;31, 2022, <ix:nonFraction unitRef="shares" contextRef="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231" decimals="-5" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMjI1_77420476-6260-4384-81d6-64beabdc5366"><ix:nonFraction unitRef="shares" contextRef="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231" decimals="-5" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMjI1_89be2776-c058-4006-a433-e55da3d1d829">0.6</ix:nonFraction></ix:nonFraction>&#160;million shares were purchased and issued. As of December&#160;31, 2022, unrecognized stock-based compensation expense of $<ix:nonFraction unitRef="usd" contextRef="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231" decimals="-5" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMzIx_2bfcea1b-1a05-41b2-98f9-beb456dbc50c">9.3</ix:nonFraction>&#160;million related to the NQ ESPP is expected to be recognized over a remaining weighted-average service period of <ix:nonNumeric contextRef="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwNDI4_db204733-25a6-4f73-bb64-f8e2de4797cd">0.8</ix:nonNumeric> years.</span></div></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">52</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><ix:continuation id="i265aa42c625f45bb82da385e63418be7" continuedAt="iba15f996de044ba4a80867193a9b6e42"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Stock-Based Compensation</span></div><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDgx_df90a265-c11f-4d53-be85-e9531572fc3b" escape="true"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes stock-based compensation expense (in thousands):</span></div><div style="margin-top:10pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:50.215%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.519%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.519%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.408%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.523%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cost of revenue:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Products</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i58c539110982492a8e0b62fd8b455319_D20220101-20221231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzMtMi0xLTEtMzYxOTg_1d1b751c-84ec-4537-bc5b-ed04fde60243">1,666</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if4be25f0af9f4b0ea5f22877ddbfebd7_D20210101-20211231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzMtNC0xLTEtMzYxOTg_796e48c0-9e12-4185-8ac4-bd11ff498610">790</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i72cf599545d14ebc9ce8787ba50c5aa0_D20200101-20201231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzMtNi0xLTEtMzYxOTg_359c57ee-4dea-4d89-aa59-ea736bff3815">575</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Services</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idaed2f6c8c27442a8b45142b76ced351_D20220101-20221231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzQtMi0xLTEtMzYxOTg_65c879ff-bee7-4725-b555-34d9a40b3a96">1,034</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4106eb5f32cc4149875537163855706f_D20210101-20211231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzQtNC0xLTEtMzYxOTg_61fcc3fe-91f7-433a-a363-d551aa102f5e">668</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic93cf0acaeed4e3b979094ca720d677c_D20200101-20201231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzQtNi0xLTEtMzYxOTg_9ac80b04-b485-4aa6-ab2a-44f3f125a90b">450</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Sales and marketing</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i7662d716785e4f228c33abfdf3c8f4b3_D20220101-20221231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzUtMi0xLTEtMzYxOTg_4209bb87-f5fc-4f80-bf59-bd2d9cf93edd">12,001</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i551b31ab695c495abc571c977cc81179_D20210101-20211231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzUtNC0xLTEtMzYxOTg_09104d62-6b88-4c11-b244-188eb9457a4e">6,728</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib672ba4f581b4efb88684284d82eeeee_D20200101-20201231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzUtNi0xLTEtMzYxOTg_02b78550-9d76-4156-b784-11aae0bdd2f1">4,273</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Research and development</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i077d8297ff7e49b0bbfd5fe52a5f1bf7_D20220101-20221231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzYtMi0xLTEtMzYxOTg_727c5a5d-92d0-424c-9391-0b8c232c2156">12,165</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic6675333d4254a57862012c889ba560e_D20210101-20211231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzYtNC0xLTEtMzYxOTg_6e0481f5-2f1f-42d9-9ba1-9beac4a2d759">6,769</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3a828b5e5a764680970a3d824b40aca7_D20200101-20201231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzYtNi0xLTEtMzYxOTg_f1470a6f-3f38-42d7-a746-22d3447f9744">4,736</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">General and administrative</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i44b5a1d07f9948e1b8ee67a159f31b98_D20220101-20221231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzctMi0xLTEtMzYxOTg_8767e69c-0782-4b39-9e9a-b111e3a837e7">17,960</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id9c1cab1298a4f73ab040395f2f7faa1_D20210101-20211231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzctNC0xLTEtMzYxOTg_8aa6edfe-ede2-4799-b47f-5d71a17a7b3e">9,275</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic8e79da6e7d2470fa750cd2afb19e759_D20200101-20201231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzctNi0xLTEtMzYxOTg_0ce92471-2a2c-4000-aee8-bc7571fc666e">3,926</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzgtMi0xLTEtMzYxOTg_a49ed5ff-cd2b-41c0-8e0a-9445bf3f5576">44,826</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzgtNC0xLTEtMzYxOTg_801f914a-6ec4-445f-aee3-02b3112738b1">24,230</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzgtNi0xLTEtMzYxOTg_bcd7dd60-5d42-4159-955d-1f14716ff065">13,960</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Income tax benefits recognized</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzktMi0xLTEtNDEwNzg_3b4a4dfa-8331-4e04-9e0a-13c59d8febf9">11,501</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzktNC0xLTEtNDEwNzg_d777e2ef-68f0-4580-85c5-b859ea256c4b">16,929</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzktNi0xLTEtNDEwNzg_f5d02f19-cb9b-434e-bcd7-c00e1781d2c0">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="calx:ScheduleOfGrantDateFairValuesTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDcz_c48a0bd8-b906-4062-b5e5-c96e0b5b7baa" escape="true"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the weighted-average grant date fair values of the Company&#8217;s stock-based awards granted in the periods indicated:</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:86.111%"><tr><td style="width:1.0%"></td><td style="width:55.096%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.667%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.633%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.667%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.633%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.667%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.637%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock options</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzItMi0xLTEtMzYxOTg_a47e118b-6217-45ce-97c6-c3f915e25d41">31.86</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzItNC0xLTEtMzYxOTg_e61d5a0c-03da-415d-9345-a9aacc6ba293">26.55</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzItNi0xLTEtMzYxOTg_8575f63a-271f-4f13-b846-7438bae45177">8.55</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">ESPP</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzQtMi0xLTEtMzYxOTg_f5c4e92e-b97a-4b69-88fe-c33c3426b8b4">18.51</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="ia769a333e78142368aad724844d01ad9_D20210101-20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzQtNC0xLTEtMzYxOTg_78ea1ea9-86eb-404e-a942-80562b9863cb">12.93</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="id42b2b8786cd441ab4f99814e4e629c3_D20200101-20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzQtNi0xLTEtMzYxOTg_8519a390-b4a2-4ede-b110-bc09d20da1fd">5.52</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">NQ ESPP</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzUtMi0xLTEtMzYxOTg_cbdbcb92-e504-405c-983c-17d20786da13">52.91</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i42bec794c13c4ba7acb3467565058cfc_D20210101-20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzUtNC0xLTEtMzYxOTg_05391af4-ea5e-4831-957d-4e1917ae8302">55.50</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i7c7d626e2ca643048ffb47a60d526ee3_D20200101-20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzUtNi0xLTEtMzYxOTg_dadac7fb-f150-4e90-993c-5fdd3205c928">19.40</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company values employee stock purchase rights under the NQ ESPP at the closing market price of the Company&#8217;s common stock on the date of grant.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company estimates the fair value of stock options and employee stock purchase right under the ESPP at the grant date using the Black-Scholes option-pricing model. This model requires the use of the following assumptions:</span></div><div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(i)</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:8.57pt">Expected volatility of the Company&#8217;s common stock &#8211; The Company computes its expected volatility assumption based on a blended volatility (<ix:nonFraction unitRef="number" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="2" name="calx:PercentOfHistoricalVolatility" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMjA1_ce83c2e5-a0c2-45ff-a634-c2298f115976">50</ix:nonFraction>% historical volatility and <ix:nonFraction unitRef="number" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="2" name="calx:PercentOfImpliedVolatility" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMjM0_0f8f9ed5-92bb-44e6-acba-1ad59093e4e7">50</ix:nonFraction>% implied volatility from traded options on the Company&#8217;s common stock). The selection of a blended volatility assumption was based upon the Company&#8217;s assessment that a blended volatility is more representative of the Company&#8217;s future stock price trend as it weighs the historical volatility with the future implied volatility.</span></div><div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(ii)</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:5.8pt">Expected life of the option award &#8211; Represents the weighted-average period that the stock options are expected to remain outstanding. The Company&#8217;s computation of expected life utilizes the simplified method in accordance with Staff Accounting Bulletin No.&#160;110 due to the lack of sufficient historical exercise data to provide a reasonable basis upon which to estimate expected term.&#160;The mid-point between the vesting date and the expiration date is used as the expected term under this method.</span></div><div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(iii)</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:3.03pt">Expected dividend yield &#8211; The assumption is zero based on the Company&#8217;s history of not paying dividends and no future expectations of dividend payouts.</span></div><div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(iv)</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:3.57pt">Risk-free interest rate &#8211; Based on the U.S. Treasury yield curve in effect at the time of grant with maturities approximating the grant&#8217;s expected life.</span></div><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDk2_740f6562-5f3e-4334-87fc-1b5bd8934e73" escape="true"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the weighted-average assumptions used in estimating the grant-date fair value of stock options and of each employee&#8217;s purchase right under the ESPP in the periods indicated:</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"></td><td style="width:56.395%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.259%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline">Stock Options</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Expected volatility</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzItMi0xLTEtMzYxOTg_57b918c9-177f-4058-9683-874e22725a26">58</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i67e02cfc4d874cff8afe2659b8d50558_D20210101-20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzItNC0xLTEtMzYxOTg_1f92305b-094f-49fe-9452-92c898eb1d2d">56</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="ia0851320733849cd9c11d5811d229fc8_D20200101-20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzItNi0xLTEtMzYxOTg_4297a818-8004-4e3a-bae6-94a2f2906588">53</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Expected life (years)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzMtMi0xLTEtMzYxOTg_66f26228-1148-478d-9474-17d639e6fa86">6.1</ix:nonNumeric></span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="i67e02cfc4d874cff8afe2659b8d50558_D20210101-20211231" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzMtNC0xLTEtMzYxOTg_76613d3d-3b38-4eb1-8982-e8f6ac552993">6.0</ix:nonNumeric></span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="ia0851320733849cd9c11d5811d229fc8_D20200101-20201231" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzMtNi0xLTEtMzYxOTg_49e470ae-887e-4bca-9c88-9e641448c6ae">6.1</ix:nonNumeric></span></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Risk-free interest rate</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzUtMi0xLTEtMzYxOTg_1f13b0a8-a37c-4fa2-92fd-2470c3af55e4">3.15</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i67e02cfc4d874cff8afe2659b8d50558_D20210101-20211231" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzUtNC0xLTEtMzYxOTg_04b23f2a-6082-42d6-9bd4-3155680fbb09">1.11</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="ia0851320733849cd9c11d5811d229fc8_D20200101-20201231" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzUtNi0xLTEtMzYxOTg_b491e98f-6dbd-4912-85fc-15844c1de967">0.48</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr></table></div></ix:nonNumeric><div style="text-align:center"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNTA4_9be2f0c7-59d2-44ec-bb1a-459a8c44c4ec" escape="true"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"></td><td style="width:56.395%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.259%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline">ESPP</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Expected volatility</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzItMi0xLTEtMzYxOTg_d5c645a8-3cfa-4043-8ead-f412f70c9d55">62</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="ia769a333e78142368aad724844d01ad9_D20210101-20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzItNC0xLTEtMzYxOTg_ea313239-8e3c-4376-be65-f6be2adaad34">63</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="id42b2b8786cd441ab4f99814e4e629c3_D20200101-20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzItNi0xLTEtMzYxOTg_3cee71f0-1aaa-476e-8182-ee2d33aa0680">70</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Expected life (years)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzMtMi0xLTEtMzYxOTg_7d72d71a-4411-4e80-9f66-77553f98db32">0.5</ix:nonNumeric></span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="ia769a333e78142368aad724844d01ad9_D20210101-20211231" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzMtNC0xLTEtMzYxOTg_eefa2467-d8c4-414d-ad73-b7f88ff3ca8b">0.5</ix:nonNumeric></span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="id42b2b8786cd441ab4f99814e4e629c3_D20200101-20201231" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzMtNi0xLTEtMzYxOTg_cbe9d998-b2fd-4fce-9049-f1b7f2aa3157">0.4</ix:nonNumeric></span></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Risk-free interest rate</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzUtMi0xLTEtMzYxOTg_33215b42-2e6e-4932-9c5d-2a5154c82c61">2.16</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="ia769a333e78142368aad724844d01ad9_D20210101-20211231" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzUtNC0xLTEtMzYxOTg_9c7d370d-521e-4a5e-88b1-f0844de14b78">0.05</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="id42b2b8786cd441ab4f99814e4e629c3_D20200101-20201231" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzUtNi0xLTEtMzYxOTg_dedbebd5-4c00-4af2-8c8f-b63e11a9ede6">0.12</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr></table></ix:nonNumeric></div></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">53</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><ix:continuation id="iba15f996de044ba4a80867193a9b6e42"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In addition, the Company applies an estimated forfeiture rate to awards granted and records stock-based compensation expense only for those awards that are expected to vest. Forfeiture rates are estimated at the time of grant based on the Company&#8217;s historical experience. Further, to the extent the Company&#8217;s actual forfeiture rate is different from management&#8217;s estimate, stock-based compensation is adjusted accordingly.</span></div><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDY4_9038879d-bd24-45cd-9fa5-c5f585fad517" escape="true"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2022, unrecognized stock-based compensation expense by award type, net of estimated forfeitures, and their expected weighted-average recognition periods are summarized in the following table (in thousands).</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:63.304%"><tr><td style="width:1.0%"></td><td style="width:58.715%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.340%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:16.451%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td style="width:0.1%"></td><td style="width:2.340%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:16.454%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Stock Option</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">ESPPs</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Unrecognized stock-based compensation expense</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic1895f9b31ae4e18a52aedee0737e67e_I20221231" decimals="-3" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo2ZTk0MTU0M2Y0YmQ0MGE4OTZiNjU3YTc3MGJkYTA1ZC90YWJsZXJhbmdlOjZlOTQxNTQzZjRiZDQwYTg5NmI2NTdhNzcwYmRhMDVkXzEtMi0xLTEtMzYxOTg_e1c8fc7a-0252-4a9c-acbf-b76f74be2174">73,095</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6b7705e9c54642b2a6c0b775486df247_I20221231" decimals="-3" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo2ZTk0MTU0M2Y0YmQ0MGE4OTZiNjU3YTc3MGJkYTA1ZC90YWJsZXJhbmdlOjZlOTQxNTQzZjRiZDQwYTg5NmI2NTdhNzcwYmRhMDVkXzEtNi0xLTEtMzYxOTg_f915ecf5-3771-4076-b5ef-705b4e783e4b">9,781</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Weighted-average amortization period (in years)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo2ZTk0MTU0M2Y0YmQ0MGE4OTZiNjU3YTc3MGJkYTA1ZC90YWJsZXJhbmdlOjZlOTQxNTQzZjRiZDQwYTg5NmI2NTdhNzcwYmRhMDVkXzItMi0xLTEtMzYxOTg_c1498a02-6081-4ce5-916f-ee02bb896372">2.3</ix:nonNumeric></span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo2ZTk0MTU0M2Y0YmQ0MGE4OTZiNjU3YTc3MGJkYTA1ZC90YWJsZXJhbmdlOjZlOTQxNTQzZjRiZDQwYTg5NmI2NTdhNzcwYmRhMDVkXzItNi0xLTEtMzYxOTg_f2115b46-3716-477d-a44b-c42f31c6172b">0.8</ix:nonNumeric></span></td></tr></table></div></ix:nonNumeric><div style="margin-top:1pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company expects to recognize stock-based compensation expense of $<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-5" name="calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzMjY4_c3adbc88-eff9-49e3-ae0f-059bf2597f54">37.2</ix:nonFraction> million in 2023, $<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-5" name="calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzMjgw_a1737aa0-3b34-4e01-9f0c-23c46a1b2889">22.0</ix:nonFraction> million in 2024, $<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-5" name="calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzMjky_d8f20391-6a83-4b59-8998-5545c8df0bb1">16.0</ix:nonFraction> million in 2025 and $<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-5" name="calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzMzA3_b991db0e-c98a-4392-9861-d4496e0da734">7.7</ix:nonFraction> million in 2026. </span></div><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="calx:SharesReservedForFutureIssuanceTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNTAy_fb6afd32-d88e-4467-b2aa-e5535cebb31c" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Shares Reserved for Future Issuance </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2022, the Company had common shares reserved for future issuance as follows (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:77.631%"><tr><td style="width:1.0%"></td><td style="width:82.704%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.871%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.025%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock options outstanding</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpiZDg5ZDcyOTgwYTY0ZWU1YTk0NTViMDIyMjRiNmNiNy90YWJsZXJhbmdlOmJkODlkNzI5ODBhNjRlZTVhOTQ1NWIwMjIyNGI2Y2I3XzItMi0xLTEtMzYxOTg_d2ac7847-67e7-444e-8536-bdff77f90ec5">8,287</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Shares available for future grant under 2019 Plan</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i1c63790a858946a996ca1299276c0a06_I20221231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpiZDg5ZDcyOTgwYTY0ZWU1YTk0NTViMDIyMjRiNmNiNy90YWJsZXJhbmdlOmJkODlkNzI5ODBhNjRlZTVhOTQ1NWIwMjIyNGI2Y2I3XzMtMi0xLTEtMzYxOTg_e331859f-01c3-4c54-b213-1ca0206cd8ea">5,986</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Shares available for future issuance under ESPP</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i6b7705e9c54642b2a6c0b775486df247_I20221231" decimals="-3" name="us-gaap:CommonStockCapitalSharesReservedForFutureIssuance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpiZDg5ZDcyOTgwYTY0ZWU1YTk0NTViMDIyMjRiNmNiNy90YWJsZXJhbmdlOmJkODlkNzI5ODBhNjRlZTVhOTQ1NWIwMjIyNGI2Y2I3XzQtMi0xLTEtMzYxOTg_47983090-4a50-40e5-b162-087d8bbcd775">4,712</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Shares available for future issuance under NQ ESPP</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231" decimals="-3" name="us-gaap:CommonStockCapitalSharesReservedForFutureIssuance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpiZDg5ZDcyOTgwYTY0ZWU1YTk0NTViMDIyMjRiNmNiNy90YWJsZXJhbmdlOmJkODlkNzI5ODBhNjRlZTVhOTQ1NWIwMjIyNGI2Y2I3XzUtMi0xLTEtMzYxOTg_51e05359-a832-4642-9827-5c42b65ac7c7">3,043</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 12.25pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:CommonStockCapitalSharesReservedForFutureIssuance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpiZDg5ZDcyOTgwYTY0ZWU1YTk0NTViMDIyMjRiNmNiNy90YWJsZXJhbmdlOmJkODlkNzI5ODBhNjRlZTVhOTQ1NWIwMjIyNGI2Y2I3XzYtMi0xLTEtMzYxOTg_2939935b-2e75-4071-b498-1e51211ccb10">22,028</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div></ix:nonNumeric></ix:continuation><div id="i1dda958eb66f4ab38aa84c917304ece3_109"></div><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">7.  <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:CompensationAndEmployeeBenefitPlansTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDkvZnJhZzphYzU4Y2VkYTQ2YzM0YTJlOWMxMzgwYjJjYjUyYWVmNS90ZXh0cmVnaW9uOmFjNThjZWRhNDZjMzRhMmU5YzEzODBiMmNiNTJhZWY1XzU3Mw_82928f65-4afe-4458-b7c0-392a8a825cc3" continuedAt="i6bf44d9e03f446c7a796e6cdbf7a0195" escape="true">Employee Benefit Plan</ix:nonNumeric></span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i6bf44d9e03f446c7a796e6cdbf7a0195">The Company sponsors a 401(k) tax-deferred savings plan for all employees who meet certain eligibility requirements. Participants may contribute, on a pre-tax basis, a percentage of their annual compensation, but not to exceed a maximum contribution amount pursuant to Section&#160;401(k) of the Internal Revenue Code. The Company, at the discretion of the Board of Directors, may make additional matching contributions on behalf of the participants. The Company made matching contributions totaling $<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-5" name="us-gaap:DefinedContributionPlanCostRecognized" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDkvZnJhZzphYzU4Y2VkYTQ2YzM0YTJlOWMxMzgwYjJjYjUyYWVmNS90ZXh0cmVnaW9uOmFjNThjZWRhNDZjMzRhMmU5YzEzODBiMmNiNTJhZWY1XzUyNg_90b6ce73-b1ba-4247-90e6-96f32f395e35">4.1</ix:nonFraction> million, $<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-5" name="us-gaap:DefinedContributionPlanCostRecognized" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDkvZnJhZzphYzU4Y2VkYTQ2YzM0YTJlOWMxMzgwYjJjYjUyYWVmNS90ZXh0cmVnaW9uOmFjNThjZWRhNDZjMzRhMmU5YzEzODBiMmNiNTJhZWY1XzUzMA_528a1af2-8368-408a-ab9a-35353243cc21">3.2</ix:nonFraction> million and $<ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-5" name="us-gaap:DefinedContributionPlanCostRecognized" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDkvZnJhZzphYzU4Y2VkYTQ2YzM0YTJlOWMxMzgwYjJjYjUyYWVmNS90ZXh0cmVnaW9uOmFjNThjZWRhNDZjMzRhMmU5YzEzODBiMmNiNTJhZWY1XzUzNw_57ef8fec-4e4a-47bf-8e65-66df59fa04df">2.7</ix:nonFraction> million in 2022, 2021 and 2020, respectively.</ix:continuation></span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_112"></div><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">8.  <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ComprehensiveIncomeNoteTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90ZXh0cmVnaW9uOjdjMTg5MzFkZDcxODQ5NzFiMGI5YmQzOTBhYThiMDI2XzczOA_93c88a4b-747f-4a6d-aa7d-f041ec8d79cd" continuedAt="ic36a7ebc9eb345ac9fcc0da8f59b732b" escape="true">Accumulated Other Comprehensive Loss</ix:nonNumeric></span></div><ix:continuation id="ic36a7ebc9eb345ac9fcc0da8f59b732b"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90ZXh0cmVnaW9uOjdjMTg5MzFkZDcxODQ5NzFiMGI5YmQzOTBhYThiMDI2Xzc0MQ_12961359-0ff1-4392-b4d4-f609eb212366" escape="true"><div style="margin-top:6pt;text-indent:4.5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The table below summarizes the changes in accumulated other comprehensive loss by component:</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:80.263%"><tr><td style="width:1.0%"></td><td style="width:51.905%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.710%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.561%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.803%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.654%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.803%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.564%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized Gains and Losses on Available-for-Sale Marketable Securities</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Foreign Currency Translation Adjustments</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total</span></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib254f0683dd74e86af161b45013b2484_I20201231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzMtMi0xLTEtMzYxOTg_eaff98ff-837d-4023-acff-1a52cec5a6a4">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i960b09b6825f4607b4d06a80a878fbdb_I20201231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzMtNC0xLTEtMzYxOTg_2c6b0282-f8a5-4799-ae3e-1695b52384f2">191</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i70828112df2e4dc0aacf44aeade1a12c_I20201231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzMtNi0xLTEtMzYxOTg_43a360c3-0f92-4427-b0e1-d71e78822128">191</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other comprehensive income (loss)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0735e262a99c4c5789bcfd438e2a271f_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzQtMi0xLTEtMzYxOTg_2eb3c012-1cc3-4f9a-8160-0a9b2f82031b">179</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if64a3a711a7c4298ad36afd715aa0bb7_D20210101-20211231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzQtNC0xLTEtMzYxOTg_9840535f-409b-4d34-aa8d-83d767e903ea">50</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzQtNi0xLTEtMzYxOTg_05d0da48-6523-4f28-9cea-5ce374095b0b">129</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ief77c956212749c98a1e47bc2259eed1_I20211231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzUtMi0xLTEtMzYxOTg_50dd8804-e250-4ac7-9056-ac04dc317d7c">179</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ia6a7a2e1b59f47d885453b2b96588acc_I20211231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzUtNC0xLTEtMzYxOTg_f008578b-6c03-4b2c-a6cb-157865b4296d">141</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i7b351fe8ba1143289315d78b03323c97_I20211231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzUtNi0xLTEtMzYxOTg_1a61f658-28ce-48a0-94d5-b1abea66844c">320</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other comprehensive loss</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i12575da023634f6cb1d81df6e92df5a7_D20220101-20221231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzYtMi0xLTEtMzYxOTg_3220f09e-72ea-490d-8299-3fb5213c3f8c">1,521</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i388a82dc33064d18880924884eb0f3c6_D20220101-20221231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzYtNC0xLTEtMzYxOTg_947aafc0-ea07-4d05-8ede-22bdf36260d1">632</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzYtNi0xLTEtMzYxOTg_d3b7cb07-e0c4-485a-9c42-fc1510b8de41">2,153</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance as of December 31, 2022</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ia3ff94b23a2c4e91a27bf12f2f3e6231_I20221231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzctMi0xLTEtMzYxOTg_61984890-f518-420c-b44a-4806f098dff8">1,700</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ic9b55f5c1eeb41c79688d7363a1baa49_I20221231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzctNC0xLTEtMzYxOTg_aa65ca89-de0b-4aeb-aab1-4dbb6664d84f">773</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i94330ed0d9cb44ad89b11f0416a40439_I20221231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzctNi0xLTEtMzYxOTg_49c64e66-193d-4285-a26b-b2b2dc839aaf">2,473</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Assets and liabilities of the Company&#8217;s wholly owned foreign subsidiaries are translated from their respective functional currencies at exchange rates in effect at the balance sheet date, and revenue and expenses are translated at the monthly average exchanges rates. These translations result in differences called foreign currency translation adjustments. Realized foreign currency transaction gains or losses were not significant during the years ended December&#160;31, 2022, 2021 and 2020 and are recorded in &#8220;Other income (expense), net&#8221; in the Company's Consolidated Statements of Comprehensive Income. Realized gains and losses on sales of available-for-sale marketable securities, if any, are reclassified from accumulated other comprehensive loss to &#8220;Other income (expense), net&#8221; in our Consolidated Statements of Comprehensive Income.</span></div></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">54</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_115"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">9.  <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:IncomeTaxDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMjA_97b86f68-b9f6-4e0f-a927-22ffe4829c54" continuedAt="if08d3f1cdfbc409da8ce5c02789c1126" escape="true">Income Taxes </ix:nonNumeric></span></div><ix:continuation id="if08d3f1cdfbc409da8ce5c02789c1126" continuedAt="i508943419f6f4443b8573b28142d0330"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMjU_cabe52d2-f5f9-4d22-8023-2ddf8b873e66" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The domestic and foreign components of income before incomes taxes were as follows (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"></td><td style="width:56.395%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.259%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Domestic</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzItMi0xLTEtMzYxOTg_dc0ca780-f4e2-469e-b4aa-94aa285f418c">51,442</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzItNC0xLTEtMzYxOTg_ea59f2f3-78d8-4aab-a56e-d9e80bb53830">70,776</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzItNi0xLTEtMzYxOTg_806b3a7f-9dae-4f08-8867-eb71bb382b92">33,777</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzMtMi0xLTEtMzYxOTg_50fd12e0-79da-465e-a95d-face0431eaeb">2,600</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzMtNC0xLTEtMzYxOTg_a54e0dae-281f-40ce-91c3-e2a30e85e860">1,878</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzMtNi0xLTEtMzYxOTg_7705947f-e75b-4d2b-9b75-c69d6e6ff7e3">507</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzQtMi0xLTEtMzYxOTg_d3133df9-b25c-4ec1-b68b-2d334b741201">54,042</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzQtNC0xLTEtMzYxOTg_21aeabca-1568-4c32-950e-8f3ec203feaa">72,654</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzQtNi0xLTEtMzYxOTg_9f3ad745-1992-4bde-a4ce-cafe8383a034">34,284</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="text-indent:18pt"><span><br/></span></div><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMTY_fac6c147-2743-4428-bf4c-1f90aeed145b" escape="true"><div style="margin-top:9pt;text-indent:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Income taxes consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"></td><td style="width:56.395%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.259%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Federal</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:CurrentFederalTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtMi0xLTEtNDEwODA_9cb92e99-5dd1-4c7d-a1e1-e945b254ba1b">3,671</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:CurrentFederalTaxExpenseBenefit" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtNC0xLTEtNDEwODA_9d2b04bd-9994-4dac-b49f-1fc0266e781e">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:CurrentFederalTaxExpenseBenefit" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtNi0xLTEtNDEwODA_f26d5b28-2638-4523-9b61-0f8e157129cf">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">State</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtMi0xLTEtMzYxOTg_cce07ec3-bf1c-46f0-9ee8-ab7eafa5470a">6,555</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtNC0xLTEtMzYxOTg_62abea2d-d3e4-481f-96cb-0b82bfacaae4">2,818</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtNi0xLTEtMzYxOTg_05e8b661-505f-405a-967c-2903f1d487eb">285</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:CurrentForeignTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzQtMi0xLTEtMzYxOTg_20214784-c571-4ac5-b3c6-4abf6d75c2fd">874</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:CurrentForeignTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzQtNC0xLTEtMzYxOTg_4436e76c-c31e-425c-b65a-a0049a47a3cd">438</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:CurrentForeignTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzQtNi0xLTEtMzYxOTg_7ec5cf3b-bfe9-4462-bff3-b61dc0480a43">507</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current income tax</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:CurrentIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzUtMi0xLTEtMzYxOTg_e0230373-fbaa-4dbb-b390-86bd6bd1b43c">11,100</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:CurrentIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzUtNC0xLTEtMzYxOTg_96ca0dc9-06f5-42be-9b62-5108e70115d3">3,256</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:CurrentIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzUtNi0xLTEtMzYxOTg_ca777584-0ff9-4d4e-a549-1555de13e396">792</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Federal</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzctMi0xLTEtMzYxOTg_f873b7be-1d08-4d71-b4a8-ba79954269de">6,336</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzctNC0xLTEtMzYxOTg_9d28cb84-ce2d-419a-a499-b7e35338fe9a">157,355</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzctNi0xLTEtMzYxOTg_d9844223-e25a-4ea2-b7cf-a03431da56ab">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">State</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" sign="-" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzgtMi0xLTEtMzYxOTg_395512fd-34f0-401b-aa7a-698426eaaf64">4,372</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzgtNC0xLTEtMzYxOTg_45582e88-e09b-4e69-b7fe-2ed414cc8d58">11,631</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzgtNi0xLTEtMzYxOTg_8313dd63-1af4-4b3f-a0fe-648da3b76c17">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" sign="-" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzktMi0xLTEtMzYxOTg_6cadf060-4e2e-437c-949a-36fec1d6189c">32</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzktNC0xLTEtMzYxOTg_3285d07a-4153-4674-89e0-0a263907002f">6</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzktNi0xLTEtMzYxOTg_77bde7d6-0e87-42bc-b5d6-b61fcb72858d">8</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred income tax</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:DeferredIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzEwLTItMS0xLTM2MTk4_e6692c3f-69f0-457f-8d53-260e22f2d8f2">1,932</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:DeferredIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzEwLTQtMS0xLTM2MTk4_f044dd8b-cb87-4565-95ad-8b683dff1a65">168,980</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:DeferredIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzEwLTYtMS0xLTM2MTk4_2b2db676-9c3e-45b9-8e85-2aa71e3ba3a2">8</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 37pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:IncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzExLTItMS0xLTM2MTk4_e273ccdb-653e-4102-8729-eeb3de7f5ee4">13,032</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:IncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzExLTQtMS0xLTM2MTk4_a2c1ebdb-dc6a-4285-99d2-153e24a29059">165,724</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzExLTYtMS0xLTM2MTk4_d8975609-f3d0-4539-adaa-33e29a41a8f1">800</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMDA_f6fa31da-ccd7-46d7-9ef2-7c91848a6377" escape="true"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The differences between the statutory and effective tax rates, expressed as a percentage of net income before income taxes, were as follows:</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"></td><td style="width:56.395%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.259%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Federal statutory rate</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="INF" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzItMi0xLTEtMzYxOTg_703dedc2-464a-422e-ab25-21cdab6a0474">21.0</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="INF" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzItNC0xLTEtMzYxOTg_cad423ad-ea43-490d-8b4d-4934b7a7c38c">21.0</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="INF" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzItNi0xLTEtMzYxOTg_4ab33594-368d-4473-b480-5b609124954e">21.0</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Impact of state taxes</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzMtMi0xLTEtMzYxOTg_04504c9d-54d1-46d6-827a-e3a84e07a407">1.4</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="3" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzMtNC0xLTEtMzYxOTg_dc132db8-147b-4001-8774-0f4229d4c58a">15.6</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzMtNi0xLTEtMzYxOTg_12876404-484e-4d62-ac07-28a1db3d9d5b">0.1</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign operations</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzQtMi0xLTEtMzYxOTg_9a9addb5-b021-449a-8cd8-b6b1b7ded2c1">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="3" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzQtNC0xLTEtMzYxOTg_c3b5b15c-3260-4d0c-aca8-2bf36eba5f34">0.2</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzQtNi0xLTEtMzYxOTg_0addd5ef-a550-4e51-8a27-4aff60f9f179">0.6</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">R&amp;D tax credits</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzUtMi0xLTEtMzYxOTg_675b8848-7cce-4daa-a771-69225346e013">7.4</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzUtNC0xLTEtMzYxOTg_5bce7984-14e8-40f2-abb2-49ed53b03c30">1.4</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzUtNi0xLTEtMzYxOTg_12aaaf35-afd7-4474-a86d-4afdabdb0de2">4.8</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign income inclusion</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationFdiiPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzYtMi0xLTEtMzYxOTg_9369a1f2-5f1c-4d18-8f8e-9ba226d05c6c">1.0</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationFdiiPercent" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzYtNC0xLTEtMzYxOTg_fc7993f7-e014-429f-b4a2-7a62989839cc">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationFdiiPercent" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzYtNi0xLTEtMzYxOTg_eafba1dd-3522-4955-94a6-98e7db34d578">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock-based compensation</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzctMi0xLTEtMzYxOTg_e63c6e2f-c7a4-459a-977a-3218f917f17a">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="3" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzctNC0xLTEtMzYxOTg_10eb83b0-4ebb-4ba2-ba80-6f304aa3d3e0">12.8</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="3" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzctNi0xLTEtMzYxOTg_b5719cf9-2cd7-4aec-84a2-394f46e27e93">4.1</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other permanent items</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="3" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzgtMi0xLTEtMzYxOTg_c91f46ec-bb4e-439e-a592-31ec1abc1b66">0.2</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="3" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzgtNC0xLTEtMzYxOTg_a6cbe6d7-714e-473c-9a24-f1a3c9eca31a">0.3</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzgtNi0xLTEtMzYxOTg_52e3fd5e-9e76-47c0-b5eb-5dc3b35a8b4d">0.6</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Tax true-up</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzktMi0xLTEtMzYxOTg_ae194d89-b56b-4c80-9cbe-002a8f3a4ca4">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="3" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzktNC0xLTEtMzYxOTg_2c2a7c78-7ec6-4017-a959-d0aa5c20ba2a">0.2</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="3" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzktNi0xLTEtMzYxOTg_a77c0604-11c0-431c-a905-230ef442e889">0.4</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Valuation allowance</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="3" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEwLTItMS0xLTM2MTk4_d2986867-a39d-40a4-a6df-42e047738344">4.0</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="3" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEwLTQtMS0xLTM2MTk4_2c7add6f-12a4-48a4-97e4-9e4ce9fe7960">208.3</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="3" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEwLTYtMS0xLTM2MTk4_2f54bd32-b198-4c1b-85b9-b0e538b80bb9">48.1</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net operating loss expiration / attribute expiration</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="3" name="calx:EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzExLTItMS0xLTQwNTA2_22ebf4e0-2a1b-4557-9e71-a8ea3f739258">5.5</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="3" sign="-" name="calx:EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzExLTQtMS0xLTQwNTA2_d8d491a6-5a85-41e4-9f5c-086055dcf3c2">13.1</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="3" name="calx:EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzExLTYtMS0xLTQwNTA2_7368811b-2e60-4f5b-babd-024bafa6e5c1">37.4</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Base erosion anti-abuse tax</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationBeatPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTItMS0xLTQwNTA2_750e0f67-d7e0-4d66-8ee7-5015584b16cf">6.8</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationBeatPercent" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTQtMS0xLTQwNTA2_e4d70053-cb0a-4b38-ba1b-67271c78b685">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationBeatPercent" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTYtMS0xLTQwNTA2_b60671d3-dc29-4ee4-8d78-9c38d3e29d11">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTItMS0xLTM2MTk4_52466b4e-ed4a-497d-8676-c19888eb5ead">24.1</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="3" sign="-" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTQtMS0xLTM2MTk4_748c92db-ba73-49dc-8484-5c1b5e1bb680">228.1</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTYtMS0xLTM2MTk4_84a0c668-da5d-4771-90e3-0cfb9e0b694c">2.3</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr></table></div></ix:nonNumeric></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">55</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:1pt"><span><br/></span></div><ix:continuation id="i508943419f6f4443b8573b28142d0330" continuedAt="i29e846a54d3842b49bb59a903c7c92fd"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMDQ_c2cd9063-6e22-4dc8-9208-b1974b03211a" escape="true"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The significant components of the Company&#8217;s deferred tax assets were as follows (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"><tr><td style="width:1.0%"></td><td style="width:70.610%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.609%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.235%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.609%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.237%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred tax assets:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net operating loss carryforwards</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwards" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzMtMi0xLTEtMzYxOTg_40796e34-0619-48f2-a5ff-7e9b570a4093">44,189</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwards" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzMtNC0xLTEtMzYxOTg_4957892c-3188-48dd-b126-5a67d71062cb">82,672</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Tax credit carryforwards</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:TaxCreditCarryforwardAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzQtMi0xLTEtMzYxOTg_ee6b6c4a-9a16-46f6-aeaa-b0b4531d4bde">56,717</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:TaxCreditCarryforwardAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzQtNC0xLTEtMzYxOTg_fc5f7c9f-ba25-4ab7-923d-7125a6979bfc">52,538</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accruals and reserves</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzYtMi0xLTEtMzYxOTg_50e4deea-33d3-4ce2-92ad-d2f14dce8ee7">11,679</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzYtNC0xLTEtMzYxOTg_513a5c48-317f-4d02-9926-7e963b77d743">10,302</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred revenue</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:DeferredTaxAssetsDeferredIncome" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzctMi0xLTEtMzYxOTg_126fbf36-3d9d-469e-96ba-ae83a3c9f61d">13,156</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:DeferredTaxAssetsDeferredIncome" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzctNC0xLTEtMzYxOTg_58afa9f3-db1f-42ee-aee8-df37b4de1056">11,351</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock-based compensation</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzgtMi0xLTEtMzYxOTg_9225deb8-73f4-4377-9ed5-72f4098ce3e4">7,417</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzgtNC0xLTEtMzYxOTg_e2670c2c-4806-4a16-a9f9-a8021c7b871d">4,921</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Capitalized R&amp;D</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="calx:DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzktMi0xLTEtMzYxOTg_97bc2911-3916-47ab-b2d8-a23f6c820822">67,932</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="calx:DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzktNC0xLTEtMzYxOTg_41d2f5c6-1cee-4612-bc06-bb20bf96bcb7">38,842</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Gross deferred tax assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:DeferredTaxAssetsGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzExLTItMS0xLTM2MTk4_0650445a-f8cc-4b35-b3aa-21d30996e144">201,090</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:DeferredTaxAssetsGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzExLTQtMS0xLTM2MTk4_a2bfb597-30d4-4261-9a38-37b9a8ac694e">200,626</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Valuation allowance</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:DeferredTaxAssetsValuationAllowance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzEyLTItMS0xLTM2MTk4_2edd159c-3d42-4733-b165-f302c8599e47">29,914</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:DeferredTaxAssetsValuationAllowance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzEyLTQtMS0xLTM2MTk4_e07f96f5-7db8-4174-8270-0bed13ae4fe4">29,236</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total deferred tax assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:DeferredTaxAssetsNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzEzLTItMS0xLTM2MTk4_cd4241fa-ff9e-4297-9e2e-b36123828f5c">171,176</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:DeferredTaxAssetsNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzEzLTQtMS0xLTM2MTk4_ac42e8a4-3803-4c43-9607-e14f2eec45d2">171,390</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred tax liabilities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Fixed assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE1LTItMS0xLTM2MTk4_57674df4-b4e4-48e2-abbf-ebb6826431a1">2,648</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE1LTQtMS0xLTM2MTk4_e7190cf5-49d2-4767-b500-86d24c225c91">1,511</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Intangible assets</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE3LTItMS0xLTQwODcz_3f623930-c87e-4f35-aa3c-b108c7ee8c15">1,497</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE3LTQtMS0xLTQwODcz_0af872c8-9e8f-4a42-815f-132cd70e695c">917</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total deferred tax liabilities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:DeferredIncomeTaxLiabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE4LTItMS0xLTQxMDkz_aa58f001-2b38-4441-873e-3ec605b0a039">4,145</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:DeferredIncomeTaxLiabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE4LTQtMS0xLTQxMDkz_def451a5-ce12-43bc-a648-e0376e6441b9">2,428</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 25.75pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:DeferredTaxAssetsLiabilitiesNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE5LTItMS0xLTQxMDkz_1d95a8fc-ca2b-4943-88f5-bb146cf7cac6">167,031</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:DeferredTaxAssetsLiabilitiesNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE5LTQtMS0xLTQxMDkz_59f90680-5b5c-4230-aa3b-e25f2adc3f1a">168,962</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:1pt"><span><br/></span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">All deferred taxes, along with any related valuation allowance, are classified in the Consolidated Balance Sheet as long-term.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A valuation allowance is required when, based upon an assessment of various factors, including recent operating loss history, anticipated future earnings, and prudent and reasonable tax planning strategies, it is more likely than not that some portion of the deferred tax assets will not be realized. At each reporting period, the Company assesses the estimated future realizability of the gross carrying value of its deferred tax assets. The Company&#8217;s periodic assessments take into consideration both positive evidence (future profitability projections for example and recent financial performance) and negative evidence (historical financial performance for example) as it relates to evaluating the future recoverability of its deferred tax assets. During 2021, the Company released its valuation allowance for federal and state (with the exception of California) deferred tax assets that are more likely than not to be realized, primarily as a result of actual and projected increases in U.S. profitability in the current and future periods. In performing its analysis, the Company used the most updated plans and estimates that it currently uses to manage the underlying business and calculated the ability to utilize its deferred tax assets. The valuation allowance increased by $<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-5" name="us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzOTgwNDY1MjQ4NzM_6df00d2c-af4c-49cd-8ca3-010805cf3c79">0.7</ix:nonFraction>&#160;million from 2021 to 2022. The Company continues to maintain a valuation allowance of $<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-5" name="us-gaap:DeferredTaxAssetsValuationAllowance" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzE5MTA_8b21b654-aa3b-4bc2-b066-3490ae9d0935">29.9</ix:nonFraction>&#160;million on certain U.S. federal and state deferred tax assets that the Company believes are not more likely than not to be realized in future periods.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2022, the Company had U.S. federal and state net operating losses of approximately $<ix:nonFraction unitRef="usd" contextRef="icd96ce43bdbe4439a3f6e14fdc5c6b75_I20221231" decimals="-5" name="us-gaap:OperatingLossCarryforwards" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzIxNDM_4a7e56ba-6429-4cbd-a3d8-9ebb755bacc4">205.2</ix:nonFraction>&#160;million and $<ix:nonFraction unitRef="usd" contextRef="i7b419d352d354ed585a00db42c0dc4a8_I20221231" decimals="-5" name="us-gaap:OperatingLossCarryforwards" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzIxNTA_99a8d2a2-cd31-4bab-948f-6b60d5f2862d">24.0</ix:nonFraction>&#160;million, respectively. The U.S. federal net operating loss carryforwards will expire at various dates through 2039 if not utilized. The state net operating loss carryforwards will expire at various dates through 2039 if not utilized. Additionally, the Company has U.S. federal, California and other U.S. states research and development credits of approximately $<ix:nonFraction unitRef="usd" contextRef="icd96ce43bdbe4439a3f6e14fdc5c6b75_I20221231" decimals="-5" name="us-gaap:TaxCreditCarryforwardAmount" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzI1ODA_fc007d71-c507-41df-a898-16903cd109fa">40.7</ix:nonFraction>&#160;million, $<ix:nonFraction unitRef="usd" contextRef="ifb0a61fc15ad461aae58a57e0493b921_I20221231" decimals="-5" name="us-gaap:TaxCreditCarryforwardAmount" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzI1ODQ_e215c6c3-cf31-414d-b4fb-bfd4faa04c01">47.0</ix:nonFraction>&#160;million and $<ix:nonFraction unitRef="usd" contextRef="i0e5bdc2854004c18b26a2bdaaed61080_I20221231" decimals="-5" name="us-gaap:TaxCreditCarryforwardAmount" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzI1OTE_12e3d10b-0623-4acd-9dd4-0743cf417fc2">2.7</ix:nonFraction>&#160;million as of December&#160;31, 2022, respectively. The U.S. federal research and development credits have begun to expire in 2022 and will continue to expire at various dates through 2042. The California research and development credits have no expiration date. The credits related to other various U.S. states have begun to expire and will continue to expire at various dates through 2036.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Uncertain Tax Positions</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">ASC 740, </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">&#8220;Income Taxes,&#8221;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> prescribes a recognition threshold and measurement attribute to the financial statement recognition and measurement of a tax position taken or expected to be taken in a tax return. The guidance also provides guidance on derecognition, classification, accounting in interim periods and disclosure requirements for uncertain tax positions. The standard requires the Company to recognize the financial statement effects of an uncertain tax position when it is more likely than not that such position will be sustained upon audit. The Company recognizes accrued interest and penalties related to unrecognized tax benefits as interest expense and income tax expense, respectively, in its Consolidated Statements of Comprehensive Income.</span></div></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">56</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><ix:continuation id="i29e846a54d3842b49bb59a903c7c92fd"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:SummaryOfIncomeTaxContingenciesTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMTk_4130322d-713e-4368-bd48-3053d4445014" escape="true"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table reconciles the Company&#8217;s unrecognized tax benefits (in thousands):</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"><tr><td style="width:1.0%"></td><td style="width:70.610%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.609%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.235%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.609%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.237%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance at beginning of year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefits" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzItMi0xLTEtMzYxOTg_04cdffa6-d154-4c0c-a240-5e53484ea5ad">25,992</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefits" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzItNC0xLTEtMzYxOTg_1aecbef5-e781-402c-991e-e44ee5a5015e">23,516</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;&#160;&#160;Reduction for tax positions related to prior year</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzMtMi0xLTEtMzYxOTg_fa17c355-8347-45f4-932a-3976affe0aa8">905</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzMtNC0xLTEtMzYxOTg_6d84cdeb-1a17-47b4-8395-3535d2bd81d8">1,427</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;&#160;&#160;Additions for tax positions related to prior year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzQtMi0xLTEtMzYxOTg_6340c7a0-bd74-44b8-a18f-f98af8b0ff30">1,232</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzQtNC0xLTEtMzYxOTg_c918e241-e05f-41e1-bf60-4a83e7a8a182">1,947</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;&#160;&#160;Additions for tax positions related to current year</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzUtMi0xLTEtMzYxOTg_9c979d35-1289-4b1a-b8fc-ed9af7401a9b">2,896</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzUtNC0xLTEtMzYxOTg_f91c056a-b743-4ed0-85b8-7848c636615e">1,956</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance at end of year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefits" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzYtMi0xLTEtMzYxOTg_8003d912-d62a-4aaf-ad71-5c40c7af2f44">29,215</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefits" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzYtNC0xLTEtMzYxOTg_b8bf2479-1440-444e-b08c-a926ea09f441">25,992</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2022 and 2021, the Company had unrecognized tax benefits of $<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-5" name="us-gaap:UnrecognizedTaxBenefits" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzM4NDQ_b615fb7a-9380-494d-a1ed-3b17d374b4f8">29.2</ix:nonFraction>&#160;million and $<ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-5" name="us-gaap:UnrecognizedTaxBenefits" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzM4NTE_5e7ee82b-4b8c-4036-bca4-b48d3a2041d9">26.0</ix:nonFraction>&#160;million, respectively, $<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-5" name="us-gaap:UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzEwOTk1MTE2MzIxMTc_ad47d719-1da2-4684-9b1d-3270f0038679">15.3</ix:nonFraction>&#160;million of which would affect the Company&#8217;s effective tax rate if recognized. There were <ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="INF" name="us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzM5NjQ_91991360-083e-4866-810c-1e28f55e901b">no</ix:nonFraction> accrued interest or penalties for uncertain income tax as of December&#160;31, 2022.</span></div><div style="margin-bottom:6pt;margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company files tax returns in the United States and various state jurisdictions, China, India and the United Kingdom. The tax years 2000 through 2021 remain open and subject to examination by the appropriate governmental agencies due to tax attribute carryforwards.</span></div></ix:continuation><div id="i1dda958eb66f4ab38aa84c917304ece3_118"></div><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">10.  <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:EarningsPerShareTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90ZXh0cmVnaW9uOjk1MzIwYTQ5YmY4YTRkZWVhZTY4NzQwMzg2ODJiMjljXzg3MQ_9454b802-3e1d-4ba2-9a56-f8e6e8140139" continuedAt="id4b6613d3cca4459b652e82b62384edf" escape="true">Net Income Per Common Share</ix:nonNumeric></span></div><ix:continuation id="id4b6613d3cca4459b652e82b62384edf"><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90ZXh0cmVnaW9uOjk1MzIwYTQ5YmY4YTRkZWVhZTY4NzQwMzg2ODJiMjljXzg2Mg_9d07664d-b283-4541-b25f-5785d2d0824d" escape="true"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table sets forth the computation of basic and diluted net income per common share for the periods indicated (in thousands, except per share data):</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"></td><td style="width:56.395%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.259%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Numerator:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net income</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzMtMi0xLTEtMzYxOTg_54959cdc-06ac-413e-afc4-4ee7c5a2ccb6">41,010</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzMtNC0xLTEtMzYxOTg_73a5c360-5842-41ba-bae7-9a72d9693a78">238,378</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzMtNi0xLTEtMzYxOTg_0a246ff7-c089-4a24-9b7d-e9eee9520497">33,484</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Denominator:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Weighted-average common shares &#8212; basic</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzUtMi0xLTEtMzYxOTg_c883f4cd-d316-4667-a423-d97948538d41">65,058</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzUtNC0xLTEtMzYxOTg_96eb1476-d398-4248-a651-1c52088df4ca">63,277</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzUtNi0xLTEtMzYxOTg_ce6ac25b-d28a-4bd9-bcbb-78a14c5c30af">59,074</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Effect of dilutive potential common shares</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzYtMi0xLTEtMzYxOTg_0b314580-8e7c-467d-915f-e084aa3ce5b3">3,853</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzYtNC0xLTEtMzYxOTg_0a3fe510-aae8-4a4a-8d66-1bab0519f432">4,579</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzYtNi0xLTEtMzYxOTg_07e5df62-b437-4b5b-b7da-c119cd6ff537">2,924</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Weighted-average common shares &#8212; diluted</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzctMi0xLTEtMzYxOTg_eecbd2f6-bb4d-49a2-9685-c6d111b25362">68,911</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzctNC0xLTEtMzYxOTg_e723254e-d815-4edd-a5f7-c3336b62c1d3">67,856</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzctNi0xLTEtMzYxOTg_7d7b0e79-8096-42ff-bc8b-abe55934f938">61,998</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Basic net income per common share</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzktMi0xLTEtMzYxOTg_6e7391b4-f2a4-4342-afe0-331781f15fd0">0.63</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzktNC0xLTEtMzYxOTg_0d567e08-800d-40bb-bf29-19ce9e6b7afb">3.77</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzktNi0xLTEtMzYxOTg_352d1867-9b81-401b-a061-cf357f4b5734">0.57</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Diluted net income per common share</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzEwLTItMS0xLTM2MTk4_77eee169-386e-4f75-a559-08e2b0a915d5">0.60</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzEwLTQtMS0xLTM2MTk4_5e08e1d1-10a8-43a6-b795-be6b55f5cd23">3.51</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzEwLTYtMS0xLTM2MTk4_83bdc70e-7a59-40eb-9fce-65d9885ff0ed">0.54</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Potentially dilutive shares excluded, weighted-average</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzExLTItMS0xLTM2MTk4_7e217187-94dd-4c71-997d-843034ab54fa">1,758</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzExLTQtMS0xLTM2MTk4_f199b3e7-98da-45b6-bbf5-ff9c6f3b85f6">1,006</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzExLTYtMS0xLTM2MTk4_0dafc38e-5b79-4609-93ff-5aba1b247b58">753</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Unvested restricted stock awards are included in the calculation of basic weighted-average shares because such shares are participating securities; however, the impact was immaterial.</span></div><div style="margin-bottom:6pt;margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Potentially dilutive shares have been excluded from the computation of diluted net income per common share when their effect is antidilutive. These antidilutive shares were primarily from stock options.</span></div></ix:continuation><div id="i1dda958eb66f4ab38aa84c917304ece3_121"></div><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">11.  <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:SegmentReportingDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzMyNTk_e80f5514-ade2-4c4d-9409-abb8e7caeb53" continuedAt="ifc6927b916d44dc680e1b46f62384586" escape="true">Revenue from Contracts with Customers</ix:nonNumeric></span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="ifc6927b916d44dc680e1b46f62384586" continuedAt="i5f6a631a44144a139e53df436ca1db52">The Company develops, markets and sells a broadband platform and managed services, and there are no segment managers who are held accountable for operations, operating results and plans for levels or components below the Company unit level. Accordingly, the Company is considered to be in a single reporting segment and operating unit structure. The Company&#8217;s chief operating decision maker is the Company&#8217;s Chief Executive Officer, who reviews financial information presented on a Company-wide basis, for purposes of allocating resources and evaluating financial performance.</ix:continuation></span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">57</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><ix:continuation id="i5f6a631a44144a139e53df436ca1db52"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Geographic Information:</span></div><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzMyNjA_80ceea13-fb9b-48eb-8513-899f344dea95" escape="true"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following is a summary of revenue disaggregated by geographic region based upon the location of the customers (in thousands):</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"></td><td style="width:56.395%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.255%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.612%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.259%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">United States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ieae5dffc94804c0fb48da0faaee7d475_D20220101-20221231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzItMi0xLTEtMzYxOTg_f5b53a63-7315-4262-89ca-2e5ccce3faa2">786,802</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i792b178b52944936bae6b48cfc3fce7f_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzItNC0xLTEtMzYxOTg_534c83e3-b7b6-4f4e-b9ae-ef7b82890efd">565,964</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i728d38d208c644f8bd1d8544c2d48f1e_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzItNi0xLTEtMzYxOTg_4bad86ed-403a-4210-a1db-dcefa75fdafe">473,779</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Americas excluding U.S.</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i33041b28ed9f44f5a1ea4de785d07036_D20220101-20221231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzMtMi0xLTEtMzYxOTg_33676630-bd77-406d-91df-0dfdc5218a82">41,892</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie84a15f4241d4e8da95b19019b001ec5_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzMtNC0xLTEtMzYxOTg_cdadde21-6301-4d3f-bd43-7511de19cebc">45,719</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i79eefe6e67de420ab8fe4564c2d04fa1_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzMtNi0xLTEtMzYxOTg_d0ec65c7-6e78-4198-933f-e2673d256a97">27,802</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5cc304bf3bd8498298acfd78ba22d90f_D20220101-20221231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzQtMi0xLTEtMzYxOTg_8839a5f7-a0ca-401c-904d-22d83ff329b0">26,916</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5ed901e4c55c42e4a419f1770435e0db_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzQtNC0xLTEtMzYxOTg_5fb880d6-d4e1-416d-895c-9ac17809ef79">45,879</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id595cb86ff10436abaf67dbd61231ec1_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzQtNi0xLTEtMzYxOTg_f966c650-4ba0-4ba3-a49b-78791ee87dbb">22,925</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Middle East &amp; Africa</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8b262bd7fe1a4691a8c6bae2a9787fbd_D20220101-20221231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzUtMi0xLTEtMzYxOTg_c0bd7c80-a634-4301-9665-f6e70b2f730f">10,885</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ab8bb7900d4d298140ed4be06aba85_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzUtNC0xLTEtMzYxOTg_e354575a-ae3b-4efc-a70e-c343d61e485b">19,018</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iff0d225298e349df93cca1c136c9fe21_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzUtNi0xLTEtMzYxOTg_2fac8335-cb44-403d-b764-b264e379124b">14,075</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Asia Pacific</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idb8c564de1d14caaabae034fdf7227b4_D20220101-20221231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzYtMi0xLTEtMzYxOTg_4c6f54a4-9973-4bde-9198-1cfaa6c6868e">1,332</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i43b188fea50c48b0b4b3465f99c1a9a9_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzYtNC0xLTEtMzYxOTg_9bd2be1b-7215-49c1-93f0-f399f65dc7ee">2,814</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6e6ad924af64444b9fd8b9c73fe1fd0e_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzYtNi0xLTEtMzYxOTg_4583b80b-b2de-45cb-9b1d-784e185954c2">2,658</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 7.75pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzctMi0xLTEtMzYxOTg_3dba2ccc-a869-49c5-aa74-15d72ab3f087">867,827</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzctNC0xLTEtMzYxOTg_bb22b36f-6f84-4c9d-9ccb-fdda9e91632c">679,394</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzctNi0xLTEtMzYxOTg_9c2f5a56-a510-4ac8-8c78-1271ed7fba5d">541,239</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="us-gaap:ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzMyODA_ea5d1671-b706-4bf8-aa9e-f20e26513d15" escape="true"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s property and equipment, net of accumulated depreciation, are located in the following geographical areas (in thousands):</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"><tr><td style="width:1.0%"></td><td style="width:70.610%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.609%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.235%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.609%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.237%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">United States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia7372260ff5944fbbd414f122dbb6a4e_I20221231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzItMi0xLTEtMzYxOTg_f72a59ef-ee7e-47ad-a9e0-97b5ccf11dc2">21,785</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idc76a7bbda2145469e7de41ace18e7dd_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzItNC0xLTEtMzYxOTg_c68e9ddb-ce37-43d6-8575-e536aed14a5a">19,900</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">China</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2449b8a5dc374d20bbd43cda851a4aec_I20221231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzMtMi0xLTEtMzYxOTg_e3f99f86-0284-402d-ba84-2d3720cf3a34">3,220</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id634ed9a8216446eb71023487e565cff_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzMtNC0xLTEtMzYxOTg_35a5e99c-1383-4d58-8de4-b1eb4f77321e">1,840</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">India</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4dbf04314295476890b7ee4e02340210_I20221231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzQtMi0xLTEtMzYxOTg_5a222335-975e-4c68-adfa-0f937cbecbaa">829</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6c55f8ead39246eeb1b8ab7a037df871_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzQtNC0xLTEtMzYxOTg_0f7c0135-8258-411d-8109-893e898eac9e">43</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 7.75pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzUtMi0xLTEtMzYxOTg_290b8449-305e-443b-9da7-8221af050536">25,834</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzUtNC0xLTEtMzYxOTg_0d540faa-ddce-431a-a6f7-902b582bb4fa">21,783</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Contract Asset</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The primary contract asset is revenue recognized on professional services contracts where the services are transferred to the customer over time, which has yet to be billed, and is classified to remaining performance obligations within accounts receivable. Amounts are billed in accordance with the agreed-upon contractual terms. The balance as of December&#160;31, 2022 was $<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-5" name="us-gaap:ContractWithCustomerAssetNet" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEyNTI_110b8213-c3e4-4e53-a8ea-adafb85c6167">2.3</ix:nonFraction>&#160;million of which the Company expects to bill <ix:nonFraction unitRef="number" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="2" name="calx:ContractWithCustomerAssetExpectedToBeBilledYearOnePercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEyOTI_ac005320-b06a-4ef0-8f23-02fd08cd22c9">81</ix:nonFraction>% of the balance during 2023. The balance as of December&#160;31, 2021 was $<ix:nonFraction unitRef="usd" contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231" decimals="-5" name="us-gaap:ContractWithCustomerAssetNet" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEzNjM_bcd34159-f56a-4ccb-8116-96f6139dd9c7">1.7</ix:nonFraction>&#160;million of which $<ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-5" name="calx:ContractWithCustomerAssetPriorPeriodNotRecognized" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEzNzU_9f761142-0b95-4424-9642-f58d1e99b75c">0.3</ix:nonFraction>&#160;million remained in the Company's Consolidated Balance Sheet at December&#160;31, 2022. The increase in the contract asset was driven by the timing and volume of professional services contracts.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Contract Liability</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Deferred revenue was $<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-5" name="us-gaap:ContractWithCustomerLiability" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzQ1MzU_ac3f4c13-3339-4f58-ba33-2d283781f8a6">58.6</ix:nonFraction>&#160;million and $<ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-5" name="us-gaap:ContractWithCustomerLiability" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzQ1NTA_afe36b05-f18f-4098-aa8c-ceba435dd4c7">49.5</ix:nonFraction>&#160;million as of December&#160;31, 2022 and 2021, respectively. The increase in deferred revenue of $<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-5" name="us-gaap:IncreaseDecreaseInContractWithCustomerLiability" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzQ1NjU_502b1d4e-0606-4bd0-8d42-56d349135340">9.1</ix:nonFraction>&#160;million is primarily driven by cash payments received or due in advance of satisfying the Company's performance obligations during the year being greater than the $<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-5" name="us-gaap:ContractWithCustomerLiabilityRevenueRecognized" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzQ1Nzk_87fca2e9-5414-4200-87f2-189e98dce71a">26.8</ix:nonFraction>&#160;million of revenue recognized that was included in the deferred revenue balance at the beginning of the year.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue allocated to remaining performance obligations represent contract revenue that has not yet been recognized, which includes deferred revenue and amounts that will be invoiced and recognized as revenue in future periods. This amount was $<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-5" name="us-gaap:RevenueRemainingPerformanceObligation" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzIyMjE_7827a291-80f3-45fe-ba74-b19f4c5484cb">199.0</ix:nonFraction> million as of December&#160;31, 2022, and the Company expects to recognize <ix:nonFraction unitRef="number" contextRef="i2bf837c4cb024b00b0c258f20aeaad31_I20221231" decimals="2" name="us-gaap:RevenueRemainingPerformanceObligationPercentage" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzIyNzE_3079d364-c530-4db6-a071-953d03bf1121">35</ix:nonFraction>% of such revenue over the next <ix:nonNumeric contextRef="i2bf837c4cb024b00b0c258f20aeaad31_I20221231" name="us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1" format="ixt-sec:durmonth" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzMyMjE_8911e7d7-725e-4452-8f3e-781e2e400d80">12</ix:nonNumeric> months and the remainder thereafter.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Contract Costs</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company capitalizes certain sales commissions related primarily to multi-year subscriptions and extended warranty support for which the expected amortization period is greater than one year. As of December&#160;31, 2022 and 2021, the unamortized balance of deferred commissions was $<ix:nonFraction unitRef="usd" contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231" decimals="-5" name="us-gaap:CapitalizedContractCostGross" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzMxODU_3f6c6f68-60cb-4356-a002-67bf27c31fad">11.2</ix:nonFraction>&#160;million and $<ix:nonFraction unitRef="usd" contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231" decimals="-5" name="us-gaap:CapitalizedContractCostGross" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzI2MzE_de35489f-bc4a-4ee8-8ff2-668aa69a32bd">7.4</ix:nonFraction> million, respectively.&#160;For the year ended December&#160;31, 2022 the amount of amortization was $<ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="-5" name="us-gaap:CapitalizedContractCostAmortization" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzMyMDA_7867e02f-8089-454f-8871-39b108b70494">4.0</ix:nonFraction>&#160;million, compared to $<ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="-5" name="us-gaap:CapitalizedContractCostAmortization" format="ixt:num-dot-decimal" scale="6" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzI3MDM_cd308047-2cb2-452d-9f28-d01e5f3d6403">1.4</ix:nonFraction> million for the year ended December&#160;31, 2021. There was <ix:nonFraction unitRef="usd" contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231" decimals="INF" name="us-gaap:CapitalizedContractCostImpairmentLoss" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzE2NDkyNjc0NDQ5NTA_0af5d7d8-68b6-4f0e-9e86-6280ec15eec6"><ix:nonFraction unitRef="usd" contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" decimals="INF" name="us-gaap:CapitalizedContractCostImpairmentLoss" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzE2NDkyNjc0NDQ5NTA_b25a1df9-ea72-489b-a0eb-13220d6f0dfc">no</ix:nonFraction></ix:nonFraction> impairment loss in relation to the costs capitalized for either period.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Concentration of Customer Risk</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">No customer accounted for more than 10% of the Company&#8217;s revenue for the years ended December&#160;31, 2022 and 2021. Lumen Technologies, Inc. (formerly CenturyLink, Inc.), the Company&#8217;s only greater-than-10%-of-revenue customer, represented <ix:nonFraction unitRef="number" contextRef="i04be09c8797d413a93af8d5d08358be6_D20210101-20211231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzMwMjc_44a01804-92b3-4ffb-8694-4d1d60747158">11</ix:nonFraction>% of revenue for the year ended December 31, 2020.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">One customer represented <ix:nonFraction unitRef="number" contextRef="i7932d93f74d241a2b2e0cfcec811a2f5_D20220101-20221231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzMxMjY_ed45b01e-a030-4a06-90d8-ef67eebc1861">11</ix:nonFraction>% of the Company&#8217;s accounts receivable as of December&#160;31, 2022. Another customer represented <ix:nonFraction unitRef="number" contextRef="ida3b3cbaef8142a188dbc53f1b97daac_D20220101-20221231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzMyMTQ_cec02ff2-5685-43a7-bc3f-b9f5aa296fae">12</ix:nonFraction>% of the Company&#8217;s accounts receivable as of December&#160;31, 2021.</span></div></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">58</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_127"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 9.&#160;&#160;&#160;&#160;Changes in and Disagreements with Accountants on Accounting and Financial Disclosure</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">There were no changes in nor any disagreements with accountants on accounting principles or practices, financial statement disclosure, auditing scope or procedures, or other reportable events requiring disclosure pursuant to Item 304(b) of Regulation S-K.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_130"></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 9A.&#160;&#160;&#160;&#160;Controls and Procedures</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Evaluation of Disclosure Controls and Procedures</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of the end of the period covered by this report, which we refer to as the evaluation date, we carried out an evaluation under the supervision and with the participation of management, including our principle executive officer and principle financial officer, of our disclosure controls and procedures (as defined in Rules 13a-15(e) and 15d-15(e) under the Exchange Act).</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The purpose of this evaluation was to determine whether as of the evaluation date our disclosure controls and procedures were effective to provide reasonable assurance that the information we are required to disclose in our filings with the SEC, (i)&#160;is recorded, processed, summarized and reported within the time periods specified in the SEC&#8217;s rules and forms and (ii)&#160;accumulated and communicated to our management, including our principal executive officer and our principal financial officer, as appropriate to allow timely decisions regarding required disclosure. Based upon this evaluation, our principal executive officer and our principal financial officer concluded that our disclosure controls and procedures were effective at the reasonable assurance level as of the end of the period covered by this report.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Management&#8217;s Report on Internal Control Over Financial Reporting</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Management is responsible for establishing and maintaining adequate internal control over financial reporting. Our internal control over financial reporting is designed to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles. Because of its inherent limitations, internal control over financial reporting may not prevent or detect misstatements. Also, projections of any evaluation of effectiveness to future periods are subject to the risk that controls may become inadequate because of changes in conditions, or that the degree of compliance with the policies or procedures may deteriorate. Management has evaluated the effectiveness of our internal control over financial reporting as of December&#160;31, 2022 using the criteria set forth in the Internal Control&#8212;Integrated Framework issued by the Committee of Sponsoring Organizations of the Treadway Commission, or COSO, (2013 framework). Based on our evaluation, management has concluded that we maintained effective control over financial reporting as of December&#160;31, 2022 based on the COSO criteria. The effectiveness of our internal control over financial reporting as of December&#160;31, 2022 has been audited by KPMG LLP, an independent registered public accounting firm, as stated in their report included in this Annual Report on Form 10-K.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Limitations on the Effectiveness of Controls</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our disclosure controls and procedures provide our principal executive officer and our principal financial officer reasonable assurances that our disclosure controls and procedures will achieve their objectives. However, our management, including our principal executive officer and our principal financial officer, does not expect that our disclosure controls and procedures or our internal control over financial reporting can or will prevent all human error. A control system, no matter how well designed and implemented, can provide only reasonable, not absolute, assurance that the objectives of the control system are met. Furthermore, the design of a control system must reflect the fact that there are internal resource constraints, and the benefit of controls must be weighed relative to their corresponding costs. Because of the limitations in all control systems, no evaluation of controls can provide complete assurance that all control issues and instances of error, if any, within our company are detected. These inherent limitations include the realities that judgments in decision-making can be faulty, and that breakdowns can occur due to human error or mistake. Additionally, controls, no matter how well designed, could be circumvented by the individual acts of specific persons within the organization. The design of any system of controls is also based in part upon certain assumptions about the likelihood of future events, and there can be no assurance that any design will succeed in achieving its stated objectives under all potential future conditions.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Changes in Internal Control over Financial Reporting</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">There was no change in our internal control over financial reporting identified in connection with the evaluation required by Rule 13a-15(d) and 15d-15(d) of the Exchange Act that occurred during the fourth quarter of 2022 that has materially affected, or is reasonably likely to materially affect, our internal control over financial reporting.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_133"></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 9B.&#160;&#160;&#160;&#160;Other Information</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">None.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">59</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_136"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 9C.&#160;&#160;&#160;&#160;Disclosure Regarding Foreign Jurisdictions that Prevent Inspections</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Not applicable.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_139"></div><div style="margin-top:6pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">PART III</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_142"></div><div style="margin-top:6pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 10.&#160;&#160;&#160;&#160;Directors, Executive Officers and Corporate Governance</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information required by this Item&#160;10 relating to our directors is incorporated by reference to the information set forth under the captions &#8220;Proposal No.&#160;1&#8212;Election of Directors&#8221; and &#8220;Director Compensation&#8221; and in other applicable sections of the Proxy Statement for the 2023 Annual Meeting of Stockholders to be filed with the Securities and Exchange Commission pursuant to Regulation 14A of the Exchange Act, or the Proxy Statement, to be filed within 120 days of the end of the fiscal year covered by this Report. Information required by this Item&#160;10 relating to our officers is incorporated by reference to the information set forth under the captions &#8220;Executive Officers&#8221; and &#8220;Executive Compensation&#8221; and in other applicable sections of the Proxy Statement. Information regarding our Section&#160;16 reporting compliance is incorporated by reference to the information set forth under the captions &#8220;Security Ownership of Certain Beneficial Owners and Management&#8221; and &#8220;Section 16(a) Beneficial Ownership Reporting Compliance&#8221; of the Proxy Statement.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We have adopted a code of ethics, which applies to all employees, officers and directors of Calix. The Code of Business Conduct and Ethics meets the requirements of a &#8220;code of ethics&#8221; as defined by Item&#160;406 of Regulation&#160;S-K, and applies to our Chief Executive Officer, Chief Financial Officer and all other employees, as indicated above. The Code of Business Conduct and Ethics also meets the requirements of a code of conduct under NYSE listing standards. The Code of Business Conduct and Ethics is posted on our website at www.calix.com under the links &#8220;About - Investor Relations - Governance - Code of Conduct.&#8221; We intend to disclose any amendments to the Code of Business Conduct and Ethics, as well as any waivers for executive officers or directors, on our website at www.calix.com.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_145"></div><div style="margin-top:6pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 11.&#160;&#160;&#160;&#160;Executive Compensation</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information required by this Item&#160;11 relating to executive compensation and other matters is incorporated by reference to the information set forth under the caption &#8220;Compensation Discussion and Analysis&#8221; and in other applicable sections of the Proxy Statement.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_148"></div><div style="margin-top:6pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 12.&#160;&#160;&#160;&#160;Security Ownership of Certain Beneficial Owners and Management and Related Stockholder Matters</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information required by this Item&#160;12 relating to security ownership of certain beneficial owners and management and related stockholder matters is incorporated by reference to the information set forth under the caption &#8220;Security Ownership of Certain Beneficial Owners and Management&#8221; and in other applicable sections of the Proxy Statement. Information regarding securities authorized for issuance under our equity compensation plans is incorporated by reference to the information set forth under the caption &#8220;Equity Compensation Plan Information&#8221; of the Proxy Statement.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_151"></div><div style="margin-top:6pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 13.             Certain Relationships and Related Transactions, and Director Independence</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information required by this Item 13 relating to certain relationships and related transactions and director independence is incorporated by reference to the information set forth under the caption &#8220;Certain Relationships and Related Transactions&#8221; and in other applicable sections of the Proxy Statement.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_154"></div><div style="margin-top:6pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 14.&#160;&#160;&#160;&#160;Principal Accountant Fees and Services</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our independent registered public accounting firm is KPMG LLP, Santa Clara, CA Auditor Firm ID: <ix:nonNumeric contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231" name="dei:AuditorFirmId" id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xNTQvZnJhZzoxNjU4M2MxZGFiNDM0ZTNjYTEwNGY3MDU4N2M0NDNlZS90ZXh0cmVnaW9uOjE2NTgzYzFkYWI0MzRlM2NhMTA0ZjcwNTg3YzQ0M2VlXzE0OQ_dc724943-2728-44f7-a688-2e03a55fbd87">185</ix:nonNumeric></span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information required by this Item&#160;14 relating to principal account fees and services is incorporated by reference to the information set forth under the caption &#8220;Principal Accountant Fees and Services&#8221; of the Proxy Statement.</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_157"></div><div style="margin-top:15pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">PART IV</span></div><div id="i1dda958eb66f4ab38aa84c917304ece3_160"></div><div style="-sec-extract:summary;margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 15.&#160;&#160;&#160;&#160;Exhibits, Financial Statement Schedules</span></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(a) The following documents are filed as part of this Report:</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="-sec-extract:summary;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">60</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="-sec-extract:summary;margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">1. Consolidated Financial Statements</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The consolidated financial statements of Calix and the report of independent registered public accounting firm thereon are set forth under Part II, Item&#160;8 of this report.</span></div><div style="margin-top:5pt;padding-left:22.5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:85.672%"><tr><td style="width:1.0%"></td><td style="width:83.370%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.430%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_64">Report of Independent Registered Public Accounting Firm</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_64">35</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_67">Consolidated Balance Sheets, As of December&#160;31, 202</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_67">2</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_67"> and 202</a></span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1</span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_67">37</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70">Consolidated Statements of Comprehensive Income</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70">, Years Ended December&#160;31, 202</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70">2</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70">, 202</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70">1</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70"> and 20</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70">20</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_70">38</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_73">Consolidated Statements of Stockholders&#8217; Equity, Years Ended December&#160;31, 202</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_73">2</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_73">, 202</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_73">1</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_73"> and 20</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_73">20</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_73">39</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76">Consolidated Statements of Cash Flows, Years Ended December&#160;31, 202</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76">2</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76">, 202</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76">1</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76"> and 20</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76">20</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_76">40</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_79">Notes to Consolidated Financial Statements</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_79">41</a></span></div></td></tr></table></div><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2. Consolidated Financial Statement Schedules</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">All schedules have been omitted because they are not applicable, not required, not presently in amounts sufficient to require submission of the schedule, or the information required to be set forth therein is included in the consolidated financial statements or notes thereto.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">3. Exhibits</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following exhibits are filed with or incorporated by reference in this report. Where such filing is made by incorporation by reference to a previously filed registration statement or report, such registration statement or report is identified in parentheses. We will furnish any exhibit upon request to: Calix Investor Relations at&#160;InvestorRelations@calix.com.</span></div><div><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:98.245%"><tr><td style="width:1.0%"></td><td style="width:7.977%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.841%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:88.782%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Exhibit</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Number</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Description</span></td></tr><tr style="height:5pt"><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3.1</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000119312510063664/dex33.htm">Amended and Restated Certificate of Incorporation of Calix, Inc. (filed as Exhibit 3.3 to Amendment No. 7 to Calix&#8217;s Registration Statement on Form S-1 filed with the Securities and Exchange Commission on March 23, 2010 (File No. 333-163252) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3.2</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000119312510063664/dex35.htm">Amended and Restated Bylaws of Calix, Inc. (filed as Exhibit 3.5 to Amendment No. 7 to Calix&#8217;s Registration Statement on Form S-1 filed with the Securities and Exchange Commission on March 23, 2010 (File No. 333-163252) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4.1</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000119312510063664/dex41.htm">Form of Calix, Inc.&#8217;s Common Stock Certificate (filed as Exhibit 4.1 to Amendment No. 7 to Calix&#8217;s Registration Statement on Form S-1 filed with the Securities and Exchange Commission on March 23, 2010 (File No. 333-163252) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4.2</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666620000018/calx-20191231xex42descript.htm">Description of Securities (filed as Exhibit 4.2 to Calix&#8217;s Form 10-K filed with the SEC on February 21, 2020 (File No. 001-34674) and incorporated by reference).</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.1*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000119312510049455/dex104.htm">Calix, Inc. 2010 Equity Incentive Award Plan and related documents (filed as Exhibit 10.4 to Amendment No. 6 to Calix&#8217;s Registration Statement on Form S-1 filed with the SEC on March 8, 2010 (File No. 333-163252) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.2</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000119312510049455/dex105.htm">Form of Indemnification Agreement made by and between Calix, Inc. and each of its directors, executive officers and some employees (filed as Exhibit 10.5 to Amendment No. 6 to Calix&#8217;s Registration Statement on Form S-1 filed with the SEC on March 8, 2010 (File No. 333-163252) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.3*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000119312509262169/dex108.htm">Offer Letter between Calix, Inc. and Carl Russo dated November 1, 2006 (filed as Exhibit 10.8 to Amendment No. 1 to Calix&#8217;s Registration Statement on Form S-1 filed with the SEC on December 31, 2009 (File No. 333-163252) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.4*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666616000106/calx_16q2xex101.htm">Offer Letter by and between Calix, Inc. and Michael Weening dated May 20, 2016 (filed as Exhibit 10.1 to Calix&#8217;s Form 10-Q filed with the SEC on August 3, 2016 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.5*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666619000128/ex102mweeningmemo112719-fi.htm">Letter Agreement dated November 27, 2019 by and between Calix, Inc. and Michael Weening (filed as Exhibit 10.2 to Calix&#8217;s Form 8-K filed with the SEC on December 3, 2019 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.6*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666621000029/calx-20201231xex106weening.htm">Amendment to Letter Agreement dated November 12, 2020 between Calix, Inc. and Michael Weening (filed as Exhibit 10.6 to Calix&#8217;s Form 10-K filed with the SEC on February 22, 2021 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.7*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666617000121/calx_17q3ex102.htm">Offer Letter between Calix, Inc. and Cory Sindelar dated September 28, 2017 (filed as Exhibit 10.2 to Calix&#8217;s Form 10-Q filed with the SEC on August 11, 2017 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.8*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666617000121/calx_17q3ex103.htm">Nonstatutory Inducement Stock Option Grant Notice between Calix, Inc. and Cory Sindelar dated October 1, 2017 (filed as Exhibit 10.3 to Calix&#8217;s Form 10-Q filed with the SEC on August 11, 2017 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.9*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666619000128/ex101csindelarmemo112719-f.htm">Letter Agreement dated November 27, 2019 by and between Calix, Inc. and Cory Sindelar (filed as Exhibit 10.1 to Calix&#8217;s Form 8-K filed with the SEC on December 3, 2019 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.10</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666618000036/calx_18q1ex102.htm">Net Lease Agreement by and between Calix, Inc. and Orchard Parkway San Jose, LLC dated March 9, 2018 (filed as Exhibit 10.</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666618000036/calx_18q1ex102.htm">2</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666618000036/calx_18q1ex102.htm"> to Calix&#8217;s Form 10-Q filed with the SEC on May 5, 2018 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr></table></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="-sec-extract:summary;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">61</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="-sec-extract:summary;margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:98.245%"><tr><td style="width:1.0%"></td><td style="width:7.977%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.841%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:88.782%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Exhibit</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Number</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Description</span></td></tr><tr style="height:5pt"><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.11</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666619000029/calx-20181231ex1030.htm">First Amendment to Net Lease Agreement by and between Calix, Inc. and Orchard Parkway San Jose, LLC dated November 14, 2018 (filed as Exhibit 10.30 to Calix's Form 10-K filed with the SEC on March 1, 2019 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.12</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666621000029/calx-20201231xex1012second.htm">Second Amendment to Net Lease Agreement by and between Calix, Inc. and Orchard Parkway San Jose, LLC dated December 10, 2020 (filed as Exhibit 10.12 to Calix&#8217;s Form 10-K filed with the SEC on February 22, 2021 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.13*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000119312519095678/d703038ddef14a.htm#toc703038_39">Calix, Inc. 2019 Equity Incentive Award Plan (incorporated by reference to Appendix A to the Registrant's definitive proxy statement on Schedule 14A, filed with the SEC on April </a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000119312519095678/d703038ddef14a.htm#toc703038_39">1</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000119312519095678/d703038ddef14a.htm#toc703038_39">, 20</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000119312519095678/d703038ddef14a.htm#toc703038_39">20</a><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000119312519095678/d703038ddef14a.htm#toc703038_39"> (File No. 001-34674))</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.14*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666621000029/calx-20201231xex1014xformo.htm">Calix, Inc. 2019 Equity Incentive Award Plan - Form of Notice of Grant of Stock Option and Option Agreement (filed as Exhibit 10.14 to Calix&#8217;s Form 10-K filed with the SEC on February 22, 2021 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.15*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666619000091/calx_19q2ex101.htm">Calix, Inc. Non-Employee Director Cash Compensation Policy, as amended May 16, 2019 (filed as Exhibit 10.1 to Calix&#8217;s Form 10-Q filed with the SEC on July 25, 2019 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.16*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666619000091/calx_19q2ex102.htm">Calix, Inc. Non-Employee Director Equity Compensation Policy, as amended May 16, 2019 (filed as Exhibit 10.2 to Calix's Form 10-Q filed with the SEC on July 25, 2019 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.17*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666620000078/calxexhibit101q2-2010q.htm">Amended and Restated Employee Stock Purchase Plan effective April 24, 2020 (filed as Exhibit 10.1 to Calix&#8217;s Form 10-Q filed with the SEC on July 21, 2020 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.18*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666620000078/calxexhibit102q2-2010q.htm">Amended and Restated 2017 Nonqualified Employee Stock Purchase Plan effective April 24, 2020 (filed as Exhibit 10.2 to Calix&#8217;s Form 10-Q filed with the SEC on July 21, 2020 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.19*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666621000039/exhibit101calixamendedandr.htm">Calix, Inc. Amended and Restated Executive Change in Control and Severance Plan effective March 26, 2021 (filed as Exhibit 10.1 to Calix&#8217;s Form 10-Q filed with the SEC on April 27, 2021 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.20*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666621000039/exhibit102non-employeedire.htm">Calix, Inc. Non-Employee Director Cash Compensation Policy, as amended February 11, 2021 (filed as Exhibit 10.2 to Calix&#8217;s Form 10-Q filed with the SEC on April 27, 2021 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.21*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666621000039/exhibit103non-employeedire.htm">Calix, Inc. Non-Employee Director Equity Compensation Policy, as amended February 11, 2021 (filed as Exhibit 10.3 to Calix&#8217;s Form 10-Q filed with the SEC on July 27, 2021 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.22*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666621000120/exhibit101non-employeedire.htm">Calix, Inc. Non-Employee Director Cash Compensation Policy, as amended August 11, 2021 (filed as Exhibit 10.1 to Calix&#8217;s Form 10-Q filed with the SEC on October 26, 2021 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.23*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666621000120/exhibit102secondamendmentt.htm">Second Amendment to Letter Agreement between Calix, Inc. and Michael Weening dated August 11, 2021 (filed as Exhibit 10.2 to Calix&#8217;s Form 10-Q filed with the SEC on October 26, 2021 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10.24*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="http://www.sec.gov/Archives/edgar/data/1406666/000140666622000050/calix_promotionletterx0929.htm">Promotion Letter between Calix, Inc. and Michael Weening dated September 30, 2022  (filed as Exhibit 10.1 to Calix&#8217;s Form 10-Q filed with the SEC on October 25, 2022 (File No. 001-34674) and incorporated by reference)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">21.1</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="calx-20221231xex211subsidi.htm">Subsidiaries of the Registrant</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23.1</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="calx-20221231xex231kpmgcon.htm">Consent of KPMG LLP, independent registered public accounting firm</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">24.1</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="#i1dda958eb66f4ab38aa84c917304ece3_169">Power of Attorney (included on signature page to this Annual Report on Form 10-K)</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">31.1</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="calx-20221231xex311.htm">Certification of Principal Executive Officer of Calix, Inc. Pursuant to Rule 13a-14(a) of the Securities Exchange Act of 1934</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">31.2</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="calx-20221231xex312.htm">Certification of Principal Financial Officer of Calix, Inc. Pursuant to Rule 13a-14(a) of the Securities Exchange Act of 1934</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">32.1</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:none" href="calx-20221231xex321.htm">Certification of Principal Executive Officer and Principal Financial Officer of Calix, Inc. Pursuant to 18 U.S.C. Section 1350, as adopted pursuant to Section 906 of the Sarbanes-Oxley Act of 2002</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">101.INS</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">XBRL Instance Document</span></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">101.SCH</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">XBRL Taxonomy Extension Schema Document</span></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">101.CAL</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">XBRL Taxonomy Extension Calculation Linkbase Document</span></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">101.DEF</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">XBRL Taxonomy Extension Definition Linkbase Document</span></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">101.LAB</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">XBRL Taxonomy Extension Label Linkbase Document</span></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">101.PRE</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">XBRL Taxonomy Extension Presentation Linkbase Document</span></td></tr></table></div><div><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:4.317%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.824%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:92.459%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">*</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Indicates management contract or compensatory plan or arrangement.</span></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div><div id="i1dda958eb66f4ab38aa84c917304ece3_163"></div><div style="margin-top:12pt;padding-left:72pt;text-indent:-72pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 16.&#160;&#160;&#160;&#160;Form 10-K Summary</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">None.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">62</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_166"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">SIGNATURES</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Pursuant to the requirements of the Securities Exchange Act of 1934, the Registrant has duly caused this report to be signed on its behalf by the undersigned thereunto duly authorized.</span></div><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:5.488%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:59.075%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.438%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:26.867%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="9" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Calix, Inc.<br/>(Registrant)</span></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Dated: </span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">February 21, 2023</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">By:</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">/s/&#160;&#160;&#160;&#160;Michael Weening&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Michael Weening</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">President and Chief Executive Officer<br/>(Principal Executive Officer)</span></td></tr><tr style="height:15pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Dated: </span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">February 21, 2023</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">By:</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">/s/&#160;&#160;&#160;&#160;Cory Sindelar&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Cory Sindelar</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Chief Financial Officer<br/>(Principal Financial Officer)</span></td></tr><tr style="height:29pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr></table></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">63</span></div></div></div><div id="i1dda958eb66f4ab38aa84c917304ece3_169"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="margin-top:6pt"><span style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#0000ff;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i1dda958eb66f4ab38aa84c917304ece3_7">Table of Contents</a></span></div></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">  POWER OF ATTORNEY</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Each person whose individual signature appears below hereby authorizes and appoints Michael Weening and Cory Sindelar, and each of them, with full power of substitution and re-substitution and full power to act without the other, as his true and lawful attorney-in-fact and agent to act in his name, place and stead and to execute in the name and on behalf of each person, individually and in each capacity stated below, and to file any and all amendments to this Annual Report on Form 10-K, and to file the same, with all exhibits thereto, and other documents in connection therewith, with the Securities and Exchange Commission, granting unto said attorneys-in-fact and agents, and each of them, full power and authority to do and perform each and every act and thing, ratifying and confirming all that said attorneys-in-fact and agents or any of them or their or his substitute or substitutes may lawfully do or cause to be done by virtue thereof.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Pursuant to the requirements of the Securities Exchange Act of 1934, this report has been signed below by the following persons on behalf of the registrant and in the capacities indicated on February&#160;21, 2023.</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:24.046%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:5.186%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:37.350%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.034%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:16.884%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline">Signature</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt 2px 37pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline">Title</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline">Date</span></td></tr><tr style="height:23pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr style="height:14pt"><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">/s/ Michael Weening</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">President and Chief Executive Officer<br/>(Principal Executive Officer)</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">February 21, 2023</span></td></tr><tr style="height:12pt"><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Michael Weening</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:23pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr style="height:12pt"><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">/s/ Cory Sindelar</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Chief Financial Officer<br/>(Principal Financial Officer)</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">February 21, 2023</span></td></tr><tr style="height:12pt"><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cory Sindelar</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:23pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">/s/ Carl Russo</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Chairman of the Board of Directors</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">February 21, 2023</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Carl Russo</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:23pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">/s/ Don Listwin</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Lead Independent Director</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">February 21, 2023</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Don Listwin</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:23pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">/s/ Christopher Bowick</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Director</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">February 21, 2023</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Christopher Bowick</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:23pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">/s/ Kathy Crusco</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Director</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">February 21, 2023</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Kathy Crusco</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:23pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">/s/ Michael Everett</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Director</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">February 21, 2023</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Michael Everett</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:23pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">/s/ Eleanor Fields</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Director</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">February 21, 2023</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Eleanor Fields</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:23pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">/s/ Kira Makagon</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Director</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">February 21, 2023</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Kira Makagon</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:23pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">/s/&#160;Rajatish Mukherjee</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Director</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">February 21, 2023</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Rajatish Mukherjee</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:23pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">/s/&#160;Kevin Peters</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Director</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">February 21, 2023</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Kevin Peters</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr></table></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">64</span></div></div></div></body></html>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-21.1
<SEQUENCE>2
<FILENAME>calx-20221231xex211subsidi.htm
<DESCRIPTION>EX-21.1
<TEXT>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
<!-- Document created using Wdesk -->
<!-- Copyright 2023 Workiva -->
<title>Document</title></head><body><div id="ieb4844e52e0c49009542a2ffe516da37_1"></div><div style="min-height:42.75pt;width:100%"><div><font><br></font></div></div><div style="text-align:right"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">Exhibit 21.1</font></div><div><font><br></font></div><div style="text-align:center"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">SUBSIDIARIES OF THE REGISTRANT</font></div><div style="text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:48.313%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:4.911%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:43.476%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline">Entity Name</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">&#160;&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline">Jurisdiction</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Calix Network Technology Development (Nanjing) Co. Ltd.</font></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">China</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Calix Networks UK, Ltd.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</font></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">England, UK</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">CIDC Private Limited</font></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">India</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Calix Korea Yuhan Chegim Hoesa</font></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">South Korea</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Calix International, Inc.</font></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">United States</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Calix Brasil Servicos Ltda.</font></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Brazil</font></td></tr></table></div><div><font><br></font></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><font><br></font></div></div></div></body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-23.1
<SEQUENCE>3
<FILENAME>calx-20221231xex231kpmgcon.htm
<DESCRIPTION>EX-23.1
<TEXT>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
<!-- Document created using Wdesk -->
<!-- Copyright 2023 Workiva -->
<title>Document</title></head><body><div id="i75f084cee32f4d42834e3f681707b19a_1"></div><div style="min-height:42.75pt;width:100%"><div><font><br></font></div></div><div style="text-align:right"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">Exhibit 23.1</font></div><div style="margin-top:12pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Consent of Independent Registered Public Accounting Firm</font></div><div style="text-align:center"><font><br></font></div><div><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We consent to the incorporation by reference in the registration statements (No. 333-166245, 333-172379, 333-185025, 333-194054, 333-202496, 333-209732, 333-216323, 333-218066, 333-223637, 333-226682, 333-230023, 333-234355, 333-240106, and 333-258197) on Form S-8 and (No. 333-240105) on Form S-3 of our report dated February 21, 2023, with respect to the consolidated financial statements of Calix, Inc. and the effectiveness of internal control over financial reporting.</font></div><div><font><br></font></div><div style="margin-bottom:3pt;margin-top:6pt;padding-left:216pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#47;s&#47;&#160;KPMG&#160;LLP</font></div><div><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Santa Clara, California</font></div><div><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">February&#160;21, 2023</font></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><font><br></font></div></div></div></body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-31.1
<SEQUENCE>4
<FILENAME>calx-20221231xex311.htm
<DESCRIPTION>EX-31.1
<TEXT>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
<!-- Document created using Wdesk -->
<!-- Copyright 2023 Workiva -->
<title>Document</title></head><body><div id="i1a2f6cb886134725b8e13f5ae7b48568_1"></div><div style="min-height:42.75pt;width:100%"><div><font><br></font></div></div><div style="text-align:right"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">Exhibit 31.1</font></div><div style="margin-top:9pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">CERTIFICATION OF PRINCIPAL EXECUTIVE OFFICER</font></div><div style="text-align:center"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">PURSUANT TO SECTION 302 OF</font></div><div style="text-align:center"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">THE SARBANES-OXLEY ACT OF 2002</font></div><div style="margin-top:9pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">I, Michael Weening, certify that&#58;</font></div><div style="margin-top:9pt;padding-left:36pt;text-indent:-36pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">1.</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:29.25pt">I have reviewed this annual report on Form 10-K of Calix, Inc. for the year ended December&#160;31, 2022&#59;</font></div><div style="margin-top:9pt;padding-left:36pt;text-indent:-36pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">2.</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:29.25pt">Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report&#59;</font></div><div style="margin-top:9pt;padding-left:36pt;text-indent:-36pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">3.</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:29.25pt">Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects the financial condition, results of operations and cash flows of the registrant as of, and for, the periods presented in this report&#59;</font></div><div style="margin-top:9pt;padding-left:36pt;text-indent:-36pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">4.</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:29.25pt">The registrant&#8217;s other certifying officer and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules 13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules 13a-15(f) and 15d-15(f)) for the registrant and have&#58;</font></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">(a)</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:8.03pt">Designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared&#59;</font></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">(b)</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:7.52pt">Designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles&#59;</font></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">(c)</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:8.03pt">Evaluated the effectiveness of the registrant&#8217;s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation&#59;&#160;and</font></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">(d)</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:7.52pt">Disclosed in this report any change in the registrant&#8217;s internal control over financial reporting that occurred during the registrant&#8217;s most recent fiscal quarter (the registrant&#8217;s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant&#8217;s internal control over financial reporting&#59;</font></div><div style="margin-top:5pt;padding-left:36pt;text-indent:-36pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">5.</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:29.25pt">The registrant&#8217;s other certifying officer and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant&#8217;s auditors and the audit committee of the registrant&#8217;s board of directors (or persons performing the equivalent functions)&#58;</font></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">(a)</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:8.03pt">All significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the registrant&#8217;s ability to record, process, summarize and report financial information&#59; and</font></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">(b)</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:7.52pt">Any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant&#8217;s internal control over financial reporting.</font></div><div><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;</font></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:43.409%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.581%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:4.170%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.581%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:43.559%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Date&#58; February 21, 2023</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#47;s&#47; Michael Weening</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Michael Weening</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">President and Chief Executive Officer<br>(Principal Executive Officer)</font></td></tr></table></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><font><br></font></div></div></div></body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-31.2
<SEQUENCE>5
<FILENAME>calx-20221231xex312.htm
<DESCRIPTION>EX-31.2
<TEXT>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
<!-- Document created using Wdesk -->
<!-- Copyright 2023 Workiva -->
<title>Document</title></head><body><div id="i27b3321575a641249d23b405444f9811_1"></div><div style="min-height:42.75pt;width:100%"><div><font><br></font></div></div><div style="text-align:right"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">Exhibit 31.2</font></div><div style="margin-top:9pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">CERTIFICATION OF PRINCIPAL FINANCIAL OFFICER</font></div><div style="text-align:center"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">PURSUANT TO SECTION 302 OF</font></div><div style="text-align:center"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">THE SARBANES-OXLEY ACT OF 2002</font></div><div style="margin-top:9pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">I, Cory Sindelar, certify that&#58;</font></div><div style="margin-top:9pt;padding-left:36pt;text-indent:-36pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">1.</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:29.25pt">I have reviewed this annual report on Form 10-K of Calix, Inc. for the year ended December&#160;31, 2022&#59;</font></div><div style="margin-top:9pt;padding-left:36pt;text-indent:-36pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">2.</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:29.25pt">Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report&#59;</font></div><div style="margin-top:9pt;padding-left:36pt;text-indent:-36pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">3.</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:29.25pt">Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects the financial condition, results of operations and cash flows of the registrant as of, and for, the periods presented in this report&#59;</font></div><div style="margin-top:9pt;padding-left:36pt;text-indent:-36pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">4.</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:29.25pt">The registrant&#8217;s other certifying officer and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules 13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules 13a-15(f) and 15d-15(f)) for the registrant and have&#58;</font></div><div style="margin-top:6pt;padding-left:72pt;text-indent:-18pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">(a)</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:8.03pt">Designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared&#59;</font></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">(b)</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:7.52pt">Designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles&#59;</font></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">(c)</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:8.03pt">Evaluated the effectiveness of the registrant&#8217;s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation&#59;&#160;and</font></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">(d)</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:7.52pt">Disclosed in this report any change in the registrant&#8217;s internal control over financial reporting that occurred during the registrant&#8217;s most recent fiscal quarter (the registrant&#8217;s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant&#8217;s internal control over financial reporting&#59;</font></div><div style="margin-top:5pt;padding-left:36pt;text-indent:-36pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">5.</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:29.25pt">The registrant&#8217;s other certifying officer and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant&#8217;s auditors and the audit committee of the registrant&#8217;s board of directors (or persons performing the equivalent functions)&#58;</font></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">(a)</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:8.03pt">All significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the registrant&#8217;s ability to record, process, summarize and report financial information&#59; and</font></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">(b)</font><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;padding-left:7.52pt">Any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant&#8217;s internal control over financial reporting.</font></div><div><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;</font></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:43.409%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.581%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:4.170%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.581%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:43.559%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Date&#58; February 21, 2023</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#47;s&#47; Cory Sindelar</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cory Sindelar</font></td></tr><tr style="height:12pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Chief Financial Officer<br>(Principal Financial Officer)</font></td></tr><tr style="height:12pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr></table></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><font><br></font></div></div></div></body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-32.1
<SEQUENCE>6
<FILENAME>calx-20221231xex321.htm
<DESCRIPTION>EX-32.1
<TEXT>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
<!-- Document created using Wdesk -->
<!-- Copyright 2023 Workiva -->
<title>Document</title></head><body><div id="i45a135d600f2402db3ea1d8d7b8bb8ec_1"></div><div style="min-height:42.75pt;width:100%"><div><font><br></font></div></div><div style="text-align:right"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">Exhibit 32.1</font></div><div style="margin-top:9pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">CERTIFICATION OF PRINCIPAL EXECUTIVE OFFICER AND PRINCIPAL FINANCIAL OFFICER</font></div><div style="text-align:center"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">PURSUANT TO 18 U.S.C. SECTION 1350,</font></div><div style="text-align:center"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">AS ADOPTED PURSUANT TO</font></div><div style="text-align:center"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">SECTION 906 OF THE SARBANES-OXLEY ACT OF 2002</font></div><div style="margin-top:9pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">I, Michael Weening, certify, pursuant to 18 U.S.C. Section&#160;1350, as adopted pursuant to Section&#160;906 of the Sarbanes-Oxley Act of 2002, that the Annual Report of Calix, Inc. (the &#8220;Company&#8221;) on Form 10-K for the fiscal year ended December&#160;31, 2022 fully complies with the requirements of Section&#160;13(a) or 15(d) of the Securities Exchange Act of 1934 and that information contained in such Annual Report on Form 10-K fairly presents in all material respects the financial condition and results of operations of the Company.</font></div><div><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;</font></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:43.409%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.581%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:4.170%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.581%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:43.559%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Date&#58; February 21, 2023</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#47;s&#47; Michael Weening</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Michael Weening</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">President and Chief Executive Officer<br>(Principal Executive Officer)</font></td></tr></table></div><div style="margin-top:4pt"><font><br></font></div><div style="margin-top:9pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">I, Cory Sindelar, certify, pursuant to 18 U.S.C. Section&#160;1350, as adopted pursuant to Section&#160;906 of the Sarbanes-Oxley Act of 2002, that the Annual Report of Calix, Inc. (the &#8220;Company&#8221;) on Form 10-K for the fiscal year ended December&#160;31, 2022 fully complies with the requirements of Section&#160;13(a) or 15(d) of the Securities Exchange Act of 1934 and that information contained in such Annual Report on Form 10-K fairly presents in all material respects the financial condition and results of operations of the Company.</font></div><div><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;</font></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:43.409%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.581%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:4.170%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.581%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:43.559%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Date&#58; February 21, 2023</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#47;s&#47; Cory Sindelar</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cory Sindelar</font></td></tr><tr style="height:14pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Chief Financial Officer<br>(Principal Financial Officer)</font></td></tr><tr style="height:12pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr></table></div><div style="margin-top:4pt;text-indent:24.75pt"><font style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">This certification accompanies the Form 10-K to which it relates, is not deemed filed with the Securities and Exchange Commission and is not to be incorporated by reference into any filing of Calix, Inc. under the Securities Act of 1933, as amended, or the Securities Exchange Act of 1934, as amended (whether made before or after the date of the Form 10-K), irrespective of any general incorporation language contained in such filing.</font></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><font><br></font></div></div></div></body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.SCH
<SEQUENCE>7
<FILENAME>calx-20221231.xsd
<DESCRIPTION>XBRL TAXONOMY EXTENSION SCHEMA DOCUMENT
<TEXT>
<XBRL>
<?xml version="1.0" encoding="UTF-8"?>

<!--XBRL Document Created with Wdesk from Workiva-->
<!--Copyright 2023 Workiva-->
<!--r:65ceb81b-1301-4d03-a3b5-a19a3f419a3b,g:9d9ffaaa-0d49-4a33-8fc4-ed994a16f30c-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:calx="http://www.calix.com/20221231" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:dtr-types="http://www.xbrl.org/dtr/type/2020-01-21" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.calix.com/20221231">
  <xs:import namespace="http://fasb.org/srt/2022" schemaLocation="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd"/>
  <xs:import namespace="http://fasb.org/us-gaap/2022" schemaLocation="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd"/>
  <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="http://www.xbrl.org/2003/xlink-2003-12-31.xsd"/>
  <xs:import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
  <xs:import namespace="http://www.xbrl.org/2003/linkbase" schemaLocation="http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd"/>
  <xs:import namespace="http://www.xbrl.org/dtr/type/2020-01-21" schemaLocation="https://www.xbrl.org/dtr/type/2020-01-21/types.xsd"/>
  <xs:import namespace="http://xbrl.org/2005/xbrldt" schemaLocation="http://www.xbrl.org/2005/xbrldt-2005.xsd"/>
  <xs:import namespace="http://xbrl.sec.gov/country/2022" schemaLocation="https://xbrl.sec.gov/country/2022/country-2022.xsd"/>
  <xs:import namespace="http://xbrl.sec.gov/dei/2022" schemaLocation="https://xbrl.sec.gov/dei/2022/dei-2022.xsd"/>
  <xs:annotation>
    <xs:appinfo>
      <link:linkbaseRef xmlns:xlink="http://www.w3.org/1999/xlink" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="calx-20221231_lab.xml" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xmlns:xlink="http://www.w3.org/1999/xlink" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="calx-20221231_pre.xml" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xmlns:xlink="http://www.w3.org/1999/xlink" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="calx-20221231_cal.xml" xlink:role="http://www.xbrl.org/2003/role/calculationLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xmlns:xlink="http://www.w3.org/1999/xlink" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="calx-20221231_def.xml" xlink:role="http://www.xbrl.org/2003/role/definitionLinkbaseRef" xlink:type="simple"/>
      <link:roleType id="Cover" roleURI="http://www.calix.com/role/Cover">
        <link:definition>0000001 - Document - Cover</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="AuditInformation" roleURI="http://www.calix.com/role/AuditInformation">
        <link:definition>0000002 - Document - Audit Information</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="ConsolidatedBalanceSheets" roleURI="http://www.calix.com/role/ConsolidatedBalanceSheets">
        <link:definition>0000003 - Statement - Consolidated Balance Sheets</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="ConsolidatedBalanceSheetsParenthetical" roleURI="http://www.calix.com/role/ConsolidatedBalanceSheetsParenthetical">
        <link:definition>0000004 - Statement - Consolidated Balance Sheets (Parenthetical)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="ConsolidatedStatementsofComprehensiveIncomeLoss" roleURI="http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss">
        <link:definition>0000005 - Statement - Consolidated Statements of Comprehensive Income (Loss)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="ConsolidatedStatementsofStockholdersEquity" roleURI="http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity">
        <link:definition>0000006 - Statement - Consolidated Statements of Stockholders' Equity</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="ConsolidatedStatementsofCashFlows" roleURI="http://www.calix.com/role/ConsolidatedStatementsofCashFlows">
        <link:definition>0000007 - Statement - Consolidated Statements of Cash Flows</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="DescriptionofBusinessandSignificantAccountingPolicies" roleURI="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPolicies">
        <link:definition>0000008 - Disclosure - Description of Business and Significant Accounting Policies</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CashCashEquivalentsandMarketableSecurities" roleURI="http://www.calix.com/role/CashCashEquivalentsandMarketableSecurities">
        <link:definition>0000009 - Disclosure - Cash, Cash Equivalents and Marketable Securities</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="FairValueMeasurements" roleURI="http://www.calix.com/role/FairValueMeasurements">
        <link:definition>0000010 - Disclosure - Fair Value Measurements</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="BalanceSheetDetails" roleURI="http://www.calix.com/role/BalanceSheetDetails">
        <link:definition>0000011 - Disclosure - Balance Sheet Details</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CommitmentsandContingencies" roleURI="http://www.calix.com/role/CommitmentsandContingencies">
        <link:definition>0000012 - Disclosure - Commitments and Contingencies</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockholdersEquity" roleURI="http://www.calix.com/role/StockholdersEquity">
        <link:definition>0000013 - Disclosure - Stockholders' Equity</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="EmployeeBenefitPlan" roleURI="http://www.calix.com/role/EmployeeBenefitPlan">
        <link:definition>0000014 - Disclosure - Employee Benefit Plan</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="AccumulatedOtherComprehensiveLoss" roleURI="http://www.calix.com/role/AccumulatedOtherComprehensiveLoss">
        <link:definition>0000015 - Disclosure - Accumulated Other Comprehensive Loss</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxes" roleURI="http://www.calix.com/role/IncomeTaxes">
        <link:definition>0000016 - Disclosure - Income Taxes</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="NetIncomePerCommonShare" roleURI="http://www.calix.com/role/NetIncomePerCommonShare">
        <link:definition>0000017 - Disclosure - Net Income Per Common Share</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RevenuefromContractswithCustomers" roleURI="http://www.calix.com/role/RevenuefromContractswithCustomers">
        <link:definition>0000018 - Disclosure - Revenue from Contracts with Customers</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="DescriptionofBusinessandSignificantAccountingPoliciesPolicies" roleURI="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies">
        <link:definition>0000019 - Disclosure - Description of Business and Significant Accounting Policies (Policies)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CashCashEquivalentsandMarketableSecuritiesTables" roleURI="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesTables">
        <link:definition>0000020 - Disclosure - Cash, Cash Equivalents and Marketable Securities (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="FairValueMeasurementsTables" roleURI="http://www.calix.com/role/FairValueMeasurementsTables">
        <link:definition>0000021 - Disclosure - Fair Value Measurements (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="BalanceSheetDetailsTables" roleURI="http://www.calix.com/role/BalanceSheetDetailsTables">
        <link:definition>0000022 - Disclosure - Balance Sheet Details (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CommitmentsandContingenciesTables" roleURI="http://www.calix.com/role/CommitmentsandContingenciesTables">
        <link:definition>0000023 - Disclosure - Commitments and Contingencies (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockholdersEquityTables" roleURI="http://www.calix.com/role/StockholdersEquityTables">
        <link:definition>0000024 - Disclosure - Stockholders' Equity (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="AccumulatedOtherComprehensiveLossTables" roleURI="http://www.calix.com/role/AccumulatedOtherComprehensiveLossTables">
        <link:definition>0000025 - Disclosure - Accumulated Other Comprehensive Loss (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxesTables" roleURI="http://www.calix.com/role/IncomeTaxesTables">
        <link:definition>0000026 - Disclosure - Income Taxes (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="NetIncomePerCommonShareTables" roleURI="http://www.calix.com/role/NetIncomePerCommonShareTables">
        <link:definition>0000027 - Disclosure - Net Income Per Common Share (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RevenuefromContractswithCustomersTables" roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersTables">
        <link:definition>0000028 - Disclosure - Revenue from Contracts with Customers (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="DescriptionofBusinessandSignificantAccountingPoliciesContractCostsDetails" roleURI="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesContractCostsDetails">
        <link:definition>0000029 - Disclosure - Description of Business and Significant Accounting Policies - Contract Costs (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails" roleURI="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails">
        <link:definition>0000030 - Disclosure - Description of Business and Significant Accounting Policies - Useful Lives of Property and Equipment (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail" roleURI="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail">
        <link:definition>0000031 - Disclosure - Description of Business and Significant Accounting Policies - Additional Information (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CashCashEquivalentsandMarketableSecuritiesDetails" roleURI="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails">
        <link:definition>0000032 - Disclosure - Cash, Cash Equivalents and Marketable Securities (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails" roleURI="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails">
        <link:definition>0000033 - Disclosure - Cash, Cash Equivalents, and Marketable Securities - Schedule of Marketable Securities (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="FairValueMeasurementsDetails" roleURI="http://www.calix.com/role/FairValueMeasurementsDetails">
        <link:definition>0000034 - Disclosure - Fair Value Measurements (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="BalanceSheetDetailsAccountsReceivableDetails" roleURI="http://www.calix.com/role/BalanceSheetDetailsAccountsReceivableDetails">
        <link:definition>0000035 - Disclosure - Balance Sheet Details - Accounts Receivable (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="BalanceSheetDetailsAllowanceandProductReturnReserveDetails" roleURI="http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails">
        <link:definition>0000036 - Disclosure - Balance Sheet Details - Allowance and Product Return Reserve (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="BalanceSheetDetailsInventoryDetails" roleURI="http://www.calix.com/role/BalanceSheetDetailsInventoryDetails">
        <link:definition>0000037 - Disclosure - Balance Sheet Details - Inventory (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails" roleURI="http://www.calix.com/role/BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails">
        <link:definition>0000038 - Disclosure - Balance Sheet Details - Schedule of Prepaid and Other Current Assets (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="BalanceSheetDetailsPropertyandEquipmentnetDetails" roleURI="http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails">
        <link:definition>0000039 - Disclosure - Balance Sheet Details - Property and Equipment, net (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="BalanceSheetDetailsIntangibleAssetAcquisitionDetails" roleURI="http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails">
        <link:definition>0000040 - Disclosure - Balance Sheet Details - Intangible Asset Acquisition (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="BalanceSheetDetailsAccruedLiabilitiesDetails" roleURI="http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails">
        <link:definition>0000041 - Disclosure - Balance Sheet Details - Accrued Liabilities (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="BalanceSheetDetailsProductWarrantyActivityDetails" roleURI="http://www.calix.com/role/BalanceSheetDetailsProductWarrantyActivityDetails">
        <link:definition>0000042 - Disclosure - Balance Sheet Details - Product Warranty Activity (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="BalanceSheetDetailsRestructuringDetails" roleURI="http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails">
        <link:definition>0000043 - Disclosure - Balance Sheet Details - Restructuring (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CommitmentsandContingenciesOperatingLeaseDetails" roleURI="http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails">
        <link:definition>0000044 - Disclosure - Commitments and Contingencies - Operating Lease (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CommitmentsandContingenciesOperatingLeaseDetails_1" roleURI="http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails_1">
        <link:definition>0000044 - Disclosure - Commitments and Contingencies - Operating Lease (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CommitmentsandContingenciesSubleaseDetails" roleURI="http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails">
        <link:definition>0000045 - Disclosure - Commitments and Contingencies - Sublease (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CommitmentsandContingenciesOperatingLeaseLiabilityDetails" roleURI="http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseLiabilityDetails">
        <link:definition>0000046 - Disclosure - Commitments and Contingencies - Operating Lease Liability (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CommitmentsandContingenciesTextualDetails" roleURI="http://www.calix.com/role/CommitmentsandContingenciesTextualDetails">
        <link:definition>0000047 - Disclosure - Commitments and Contingencies - Textual (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails" roleURI="http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails">
        <link:definition>0000048 - Disclosure - Stockholders' Equity - Stock Offering, Treasury Stock Retirement, Preferred Stock and Common Stock (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockholdersEquityStockRepurchaseProgramDetails" roleURI="http://www.calix.com/role/StockholdersEquityStockRepurchaseProgramDetails">
        <link:definition>0000049 - Disclosure - Stockholders' Equity - Stock Repurchase Program (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockholdersEquityEquityIncentivePlansDetails" roleURI="http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails">
        <link:definition>0000050 - Disclosure - Stockholders' Equity - Equity Incentive Plans (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockholdersEquityStockOptionsActivityDetails" roleURI="http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails">
        <link:definition>0000051 - Disclosure - Stockholders' Equity - Stock Options Activity (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockholdersEquityFairValueofAwardsGrantedDetails" roleURI="http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails">
        <link:definition>0000052 - Disclosure - Stockholders' Equity - Fair Value of Awards Granted (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockholdersEquityStockBasedCompensationExpenseDetails" roleURI="http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails">
        <link:definition>0000053 - Disclosure - Stockholders' Equity - Stock-Based Compensation Expense (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockholdersEquityESPPDetails" roleURI="http://www.calix.com/role/StockholdersEquityESPPDetails">
        <link:definition>0000054 - Disclosure - Stockholders' Equity - ESPP (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockholdersEquityAssumptionsDetails" roleURI="http://www.calix.com/role/StockholdersEquityAssumptionsDetails">
        <link:definition>0000055 - Disclosure - Stockholders' Equity - Assumptions (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails" roleURI="http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails">
        <link:definition>0000056 - Disclosure - Stockholders' Equity - Unrecognized Stock-based Compensation Expenses (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockholdersEquitySharesReservedForFutureIssuanceDetails" roleURI="http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails">
        <link:definition>0000057 - Disclosure - Stockholders' Equity - Shares Reserved For Future Issuance (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="EmployeeBenefitPlanDetails" roleURI="http://www.calix.com/role/EmployeeBenefitPlanDetails">
        <link:definition>0000058 - Disclosure - Employee Benefit Plan (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="AccumulatedOtherComprehensiveLossDetails" roleURI="http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails">
        <link:definition>0000059 - Disclosure - Accumulated Other Comprehensive Loss (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails" roleURI="http://www.calix.com/role/IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails">
        <link:definition>0000060 - Disclosure - Income Taxes - Loss before Provision for Income Taxes (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxesComponentsofIncomeTaxProvisionDetails" roleURI="http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails">
        <link:definition>0000061 - Disclosure - Income Taxes - Components of Income Tax Provision (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxesIncomeTaxRateReconciliationDetails" roleURI="http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails">
        <link:definition>0000062 - Disclosure - Income Taxes - Income Tax Rate Reconciliation (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails" roleURI="http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails">
        <link:definition>0000063 - Disclosure - Income Taxes - Components of Deferred Tax Assets and Liabilities (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxesUnrecognizedTaxBenefitsActivityDetails" roleURI="http://www.calix.com/role/IncomeTaxesUnrecognizedTaxBenefitsActivityDetails">
        <link:definition>0000064 - Disclosure - Income Taxes - Unrecognized Tax Benefits Activity (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxesTextualDetails" roleURI="http://www.calix.com/role/IncomeTaxesTextualDetails">
        <link:definition>0000065 - Disclosure - Income Taxes - Textual (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails" roleURI="http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails">
        <link:definition>0000066 - Disclosure - Net Income Per Common Share - Basic and Diluted Shares Calculation (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails" roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails">
        <link:definition>0000067 - Disclosure - Revenue from Contracts with Customers - Revenue by Geographic Region (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails" roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails">
        <link:definition>0000068 - Disclosure - Revenue from Contracts with Customers - Property and Equipment by Geographic Region (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RevenuefromContractswithCustomersContractCostsDetails" roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersContractCostsDetails">
        <link:definition>0000069 - Disclosure - Revenue from Contracts with Customers - Contract Costs (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RevenuefromContractswithCustomersPerformanceObligationDetails" roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails">
        <link:definition>0000070 - Disclosure - Revenue from Contracts with Customers - Performance Obligation (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RevenuefromContractswithCustomersPerformanceObligationDetails_1" roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails_1">
        <link:definition>0000070 - Disclosure - Revenue from Contracts with Customers - Performance Obligation (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RevenuefromContractswithCustomersContractAssetsandLiabilitiesDetails" roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersContractAssetsandLiabilitiesDetails">
        <link:definition>0000071 - Disclosure - Revenue from Contracts with Customers - Contract Assets and Liabilities (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RevenuefromContractswithCustomersConcentrationRiskDetails" roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails">
        <link:definition>0000072 - Disclosure - Revenue from Contracts with Customers - Concentration Risk (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
    </xs:appinfo>
  </xs:annotation>
  <xs:element id="calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour" abstract="false" name="EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour" nillable="true" xbrli:periodType="duration" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember" abstract="true" name="ShortTermMarketableSecuritiesAndCashEquivalentsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_CaliforniaStateMember" abstract="false" name="CaliforniaStateMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_ProductWarrantyPeriod" abstract="false" name="ProductWarrantyPeriod" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:durationItemType"/>
  <xs:element id="calx_ScheduleOfGrantDateFairValuesTableTextBlock" abstract="false" name="ScheduleOfGrantDateFairValuesTableTextBlock" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType"/>
  <xs:element id="calx_BrazilChinaAndUnitedKingdomMember" abstract="true" name="BrazilChinaAndUnitedKingdomMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_ChangeInCapitalExpendituresIncurredButNotYetPaid" abstract="false" name="ChangeInCapitalExpendituresIncurredButNotYetPaid" nillable="true" xbrli:periodType="duration" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_AccruedBusinessEventsCurrent" abstract="false" name="AccruedBusinessEventsCurrent" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_ProductReturnReserveCurrent" abstract="false" name="ProductReturnReserveCurrent" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_ScheduleOfCertainTermsLineItemsLineItems" abstract="true" name="ScheduleOfCertainTermsLineItemsLineItems" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:stringItemType"/>
  <xs:element id="calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree" abstract="false" name="EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition" abstract="false" name="ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition" nillable="true" xbrli:periodType="instant" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="calx_OneCustomerMember" abstract="true" name="OneCustomerMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_AmericasExUSMember" abstract="true" name="AmericasExUSMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_OtherStateMember" abstract="false" name="OtherStateMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_SharesReservedForFutureIssuanceTableTextBlock" abstract="false" name="SharesReservedForFutureIssuanceTableTextBlock" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType"/>
  <xs:element id="calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer" abstract="false" name="AccruedExcessAndObsoleteInventoryAtContractManufacturer" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare" abstract="false" name="SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare" nillable="true" xbrli:periodType="instant" substitutionGroup="xbrli:item" type="dtr-types:perShareItemType"/>
  <xs:element id="calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent" abstract="false" name="PrepaidExpensesAndOtherAssetsMiscellaneousCurrent" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_ContractualTermStockOptions" abstract="false" name="ContractualTermStockOptions" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:durationItemType"/>
  <xs:element id="calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock" abstract="false" name="CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType"/>
  <xs:element id="calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares" abstract="false" name="ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares" nillable="true" xbrli:periodType="instant" substitutionGroup="xbrli:item" type="xbrli:sharesItemType"/>
  <xs:element id="calx_A2019EquityIncentiveAwardPlanMember" abstract="true" name="A2019EquityIncentiveAwardPlanMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_EmployeeStockPurchasePlanMember" abstract="true" name="EmployeeStockPurchasePlanMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts" abstract="false" name="DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_ContractWithCustomerAssetPriorPeriodNotRecognized" abstract="false" name="ContractWithCustomerAssetPriorPeriodNotRecognized" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_IncomeTaxesLineItems" abstract="true" name="IncomeTaxesLineItems" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:stringItemType"/>
  <xs:element id="calx_AccruedCustomerRebates" abstract="false" name="AccruedCustomerRebates" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_A2017NonqualifiedEmployeeStockPurchasePlanMember" abstract="true" name="A2017NonqualifiedEmployeeStockPurchasePlanMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_ScheduleOfCertainTermsTableTable" abstract="true" name="ScheduleOfCertainTermsTableTable" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrldt:hypercubeItem" type="xbrli:stringItemType"/>
  <xs:element id="calx_CostOfRevenueProductsMember" abstract="true" name="CostOfRevenueProductsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_CashCashEquivalentsAndMarketableSecurities" abstract="false" name="CashCashEquivalentsAndMarketableSecurities" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_MiddleEastAndAfricaMember" abstract="true" name="MiddleEastAndAfricaMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_AccruedRevenueSharePaymentsCurrent" abstract="false" name="AccruedRevenueSharePaymentsCurrent" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_ShortTermMarketableSecuritiesMember" abstract="true" name="ShortTermMarketableSecuritiesMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_CostOfRevenueServicesMember" abstract="true" name="CostOfRevenueServicesMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_SoftwareMember" abstract="true" name="SoftwareMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod" abstract="false" name="SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:durationItemType"/>
  <xs:element id="calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent" abstract="false" name="ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent" abstract="false" name="ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="calx_SECSchedule1209ReserveProductReturnsMember" abstract="true" name="SECSchedule1209ReserveProductReturnsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_PercentOfImpliedVolatility" abstract="false" name="PercentOfImpliedVolatility" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="calx_PerformanceTargetsServicesConditionPeriod" abstract="false" name="PerformanceTargetsServicesConditionPeriod" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:durationItemType"/>
  <xs:element id="calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember" abstract="true" name="AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent" abstract="false" name="ContractWithCustomerAssetExpectedToBeBilledYearOnePercent" nillable="true" xbrli:periodType="instant" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent" abstract="false" name="ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent" nillable="true" xbrli:periodType="instant" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent" abstract="false" name="ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="calx_PercentOfHistoricalVolatility" abstract="false" name="PercentOfHistoricalVolatility" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="calx_CustomerTwoMember" abstract="true" name="CustomerTwoMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_AccruedFreight" abstract="false" name="AccruedFreight" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_LesseeOperatingLeaseLiabilityTableTextBlock" abstract="false" name="LesseeOperatingLeaseLiabilityTableTextBlock" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType"/>
  <xs:element id="calx_PerformanceBasedStockOptionsMember" abstract="true" name="PerformanceBasedStockOptionsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_AuditInformationAbstract" abstract="true" name="AuditInformationAbstract" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:stringItemType"/>
  <xs:element id="calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods" abstract="false" name="ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods" nillable="true" xbrli:periodType="instant" substitutionGroup="xbrli:item" type="xbrli:integerItemType"/>
  <xs:element id="calx_SanJoseCaliforniaMember" abstract="true" name="SanJoseCaliforniaMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_A2019PlanMember" abstract="true" name="A2019PlanMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth" abstract="false" name="EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_PublicStockOfferingMember" abstract="true" name="PublicStockOfferingMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_PaymentsForFinancingArrangements" abstract="false" name="PaymentsForFinancingArrangements" nillable="true" xbrli:periodType="duration" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent" abstract="false" name="ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo" abstract="false" name="EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_MinimumExercisePriceOfStockOptionPercent" abstract="false" name="MinimumExercisePriceOfStockOptionPercent" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock" abstract="false" name="ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType"/>
  <xs:element id="calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod" abstract="false" name="ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod" nillable="true" xbrli:periodType="instant" substitutionGroup="xbrli:item" type="xbrli:sharesItemType"/>
  <xs:element id="calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss" abstract="false" name="EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="calx_A2021PerformanceTargetsMember" abstract="true" name="A2021PerformanceTargetsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture" abstract="false" name="ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:durationItemType"/>
  <xs:element id="calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet" abstract="false" name="ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:sharesItemType"/>
  <xs:element id="calx_LumenTechnologiesIncMember" abstract="true" name="LumenTechnologiesIncMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes" abstract="false" name="TaxesPayableCurrentExcludingAccruedIncomeTaxes" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="calx_IncomeTaxesTable" abstract="true" name="IncomeTaxesTable" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrldt:hypercubeItem" type="xbrli:stringItemType"/>
</xs:schema>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.CAL
<SEQUENCE>8
<FILENAME>calx-20221231_cal.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION CALCULATION LINKBASE DOCUMENT
<TEXT>
<XBRL>
<?xml version="1.0" encoding="UTF-8"?>

<!--XBRL Document Created with Wdesk from Workiva-->
<!--Copyright 2023 Workiva-->
<!--r:65ceb81b-1301-4d03-a3b5-a19a3f419a3b,g:9d9ffaaa-0d49-4a33-8fc4-ed994a16f30c-->
<link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://www.calix.com/role/ConsolidatedBalanceSheets" xlink:type="simple" xlink:href="calx-20221231.xsd#ConsolidatedBalanceSheets"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/ConsolidatedBalanceSheets" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_8e81763f-0454-4d5f-b44c-1688f6ee3623" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockholdersEquity"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockValue_2b8ad4a8-95db-479d-8e28-34664ef02f36" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockValue"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_StockholdersEquity_8e81763f-0454-4d5f-b44c-1688f6ee3623" xlink:to="loc_us-gaap_PreferredStockValue_2b8ad4a8-95db-479d-8e28-34664ef02f36" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockValue_86498130-3003-4196-906b-6376c7b010e1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockValue"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_StockholdersEquity_8e81763f-0454-4d5f-b44c-1688f6ee3623" xlink:to="loc_us-gaap_CommonStockValue_86498130-3003-4196-906b-6376c7b010e1" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalCommonStock_0e7465a5-b2d4-43c2-aaa5-f32897f1bbd7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AdditionalPaidInCapitalCommonStock"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_StockholdersEquity_8e81763f-0454-4d5f-b44c-1688f6ee3623" xlink:to="loc_us-gaap_AdditionalPaidInCapitalCommonStock_0e7465a5-b2d4-43c2-aaa5-f32897f1bbd7" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_11d9f4d9-d79b-4e71-9338-494c0ab85333" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_StockholdersEquity_8e81763f-0454-4d5f-b44c-1688f6ee3623" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_11d9f4d9-d79b-4e71-9338-494c0ab85333" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsAccumulatedDeficit_cf9058e7-f06e-4361-b3cf-351bb6a4f763" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RetainedEarningsAccumulatedDeficit"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_StockholdersEquity_8e81763f-0454-4d5f-b44c-1688f6ee3623" xlink:to="loc_us-gaap_RetainedEarningsAccumulatedDeficit_cf9058e7-f06e-4361-b3cf-351bb6a4f763" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesAndStockholdersEquity_76ded0cf-ea95-4ea4-8894-63d3aed64bc4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LiabilitiesAndStockholdersEquity"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Liabilities_34190c02-6114-422f-b3cd-ee8e40267d0e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Liabilities"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquity_76ded0cf-ea95-4ea4-8894-63d3aed64bc4" xlink:to="loc_us-gaap_Liabilities_34190c02-6114-422f-b3cd-ee8e40267d0e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_bc065dec-800d-427b-919c-4afd9187b79d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockholdersEquity"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquity_76ded0cf-ea95-4ea4-8894-63d3aed64bc4" xlink:to="loc_us-gaap_StockholdersEquity_bc065dec-800d-427b-919c-4afd9187b79d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingencies_0cf708c7-2a9b-4a35-bf28-fe4026a79092" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommitmentsAndContingencies"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquity_76ded0cf-ea95-4ea4-8894-63d3aed64bc4" xlink:to="loc_us-gaap_CommitmentsAndContingencies_0cf708c7-2a9b-4a35-bf28-fe4026a79092" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrent_2e1d78c8-4151-4969-95ec-7dd9ee04468c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LiabilitiesCurrent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent_5538be86-236a-41e4-9273-6768c43480f7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccruedLiabilitiesCurrent"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LiabilitiesCurrent_2e1d78c8-4151-4969-95ec-7dd9ee04468c" xlink:to="loc_us-gaap_AccruedLiabilitiesCurrent_5538be86-236a-41e4-9273-6768c43480f7" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityCurrent_f454ff5c-974f-43f6-b367-c25febc29756" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ContractWithCustomerLiabilityCurrent"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LiabilitiesCurrent_2e1d78c8-4151-4969-95ec-7dd9ee04468c" xlink:to="loc_us-gaap_ContractWithCustomerLiabilityCurrent_f454ff5c-974f-43f6-b367-c25febc29756" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsPayableCurrent_de9d8c55-f12f-427c-8c30-8d0322902986" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsPayableCurrent"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LiabilitiesCurrent_2e1d78c8-4151-4969-95ec-7dd9ee04468c" xlink:to="loc_us-gaap_AccountsPayableCurrent_de9d8c55-f12f-427c-8c30-8d0322902986" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrent_52697fd2-649b-41fb-a6fb-963ebdf20f68" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AssetsCurrent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_ed888240-a3eb-4f9d-bcaf-685226c5738f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AssetsCurrent_52697fd2-649b-41fb-a6fb-963ebdf20f68" xlink:to="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_ed888240-a3eb-4f9d-bcaf-685226c5738f" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_58aad209-0a70-4abe-b5d2-9c1a0d2b5b1c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AssetsCurrent_52697fd2-649b-41fb-a6fb-963ebdf20f68" xlink:to="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_58aad209-0a70-4abe-b5d2-9c1a0d2b5b1c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableNetCurrent_dee3f843-31dc-4fc9-a4b4-5446b188dea5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsReceivableNetCurrent"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AssetsCurrent_52697fd2-649b-41fb-a6fb-963ebdf20f68" xlink:to="loc_us-gaap_AccountsReceivableNetCurrent_dee3f843-31dc-4fc9-a4b4-5446b188dea5" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryNet_4bf18fe6-aedb-46e9-82d8-80b5a2119824" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InventoryNet"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AssetsCurrent_52697fd2-649b-41fb-a6fb-963ebdf20f68" xlink:to="loc_us-gaap_InventoryNet_4bf18fe6-aedb-46e9-82d8-80b5a2119824" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_2a64d346-54ec-4dd6-a349-3099fc0f848a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AssetsCurrent_52697fd2-649b-41fb-a6fb-963ebdf20f68" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_2a64d346-54ec-4dd6-a349-3099fc0f848a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Liabilities_bff0d2e1-3df0-4d84-a934-ceae1e23abe9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Liabilities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrent_65e5933c-5cfb-4877-89ab-b367e4e874da" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LiabilitiesCurrent"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Liabilities_bff0d2e1-3df0-4d84-a934-ceae1e23abe9" xlink:to="loc_us-gaap_LiabilitiesCurrent_65e5933c-5cfb-4877-89ab-b367e4e874da" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityNoncurrent_4af6b8e9-22a2-4b74-9303-065c12ee3af3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ContractWithCustomerLiabilityNoncurrent"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Liabilities_bff0d2e1-3df0-4d84-a934-ceae1e23abe9" xlink:to="loc_us-gaap_ContractWithCustomerLiabilityNoncurrent_4af6b8e9-22a2-4b74-9303-065c12ee3af3" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherLiabilitiesNoncurrent_d44903f6-b597-4427-9c68-95966b72d429" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherLiabilitiesNoncurrent"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Liabilities_bff0d2e1-3df0-4d84-a934-ceae1e23abe9" xlink:to="loc_us-gaap_OtherLiabilitiesNoncurrent_d44903f6-b597-4427-9c68-95966b72d429" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_4d22fa2c-ef6a-4bb6-aa69-bc4ce913e1c7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Liabilities_bff0d2e1-3df0-4d84-a934-ceae1e23abe9" xlink:to="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_4d22fa2c-ef6a-4bb6-aa69-bc4ce913e1c7" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Assets_79453b05-d3d3-4a92-a5da-68958778078a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Assets"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAssetsNoncurrent_e4dcb009-7eb3-4e34-ab6f-dfcf49018e6a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherAssetsNoncurrent"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Assets_79453b05-d3d3-4a92-a5da-68958778078a" xlink:to="loc_us-gaap_OtherAssetsNoncurrent_e4dcb009-7eb3-4e34-ab6f-dfcf49018e6a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_cf3665b6-92b1-4eca-8d2c-0596eb7710a3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Goodwill"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Assets_79453b05-d3d3-4a92-a5da-68958778078a" xlink:to="loc_us-gaap_Goodwill_cf3665b6-92b1-4eca-8d2c-0596eb7710a3" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxAssetsNet_3d8130ba-6b63-44cc-a18c-a79c5dbb4218" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxAssetsNet"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Assets_79453b05-d3d3-4a92-a5da-68958778078a" xlink:to="loc_us-gaap_DeferredIncomeTaxAssetsNet_3d8130ba-6b63-44cc-a18c-a79c5dbb4218" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseRightOfUseAsset_22df0638-f306-4181-89f1-302adb8dcb6f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseRightOfUseAsset"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Assets_79453b05-d3d3-4a92-a5da-68958778078a" xlink:to="loc_us-gaap_OperatingLeaseRightOfUseAsset_22df0638-f306-4181-89f1-302adb8dcb6f" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_4abf4e6f-bff1-4820-a878-f7babdaa294b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Assets_79453b05-d3d3-4a92-a5da-68958778078a" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentNet_4abf4e6f-bff1-4820-a878-f7babdaa294b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrent_ac92ced9-ab80-4450-be7b-1c55e7d926cf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AssetsCurrent"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Assets_79453b05-d3d3-4a92-a5da-68958778078a" xlink:to="loc_us-gaap_AssetsCurrent_ac92ced9-ab80-4450-be7b-1c55e7d926cf" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss" xlink:type="simple" xlink:href="calx-20221231.xsd#ConsolidatedStatementsofComprehensiveIncomeLoss"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_55e95ab8-a766-43cf-9ac3-cf9eb4faa36e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_a1c0d663-859a-417b-825d-0bc270399469" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_55e95ab8-a766-43cf-9ac3-cf9eb4faa36e" xlink:to="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_a1c0d663-859a-417b-825d-0bc270399469" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_59562204-2400-407d-a5ab-597ed6cd2c6a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_55e95ab8-a766-43cf-9ac3-cf9eb4faa36e" xlink:to="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_59562204-2400-407d-a5ab-597ed6cd2c6a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComprehensiveIncomeNetOfTax_d0062c4f-c120-4ea0-ac2c-9bb038ad67a8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ComprehensiveIncomeNetOfTax"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_8b3c1a24-fb49-408f-aed0-bc8d04f05658" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetIncomeLoss"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_ComprehensiveIncomeNetOfTax_d0062c4f-c120-4ea0-ac2c-9bb038ad67a8" xlink:to="loc_us-gaap_NetIncomeLoss_8b3c1a24-fb49-408f-aed0-bc8d04f05658" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_35889263-3c28-46f9-87e4-841e7edb3d6a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_ComprehensiveIncomeNetOfTax_d0062c4f-c120-4ea0-ac2c-9bb038ad67a8" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_35889263-3c28-46f9-87e4-841e7edb3d6a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_b0f47418-9320-43f5-9dda-ba5812b14e09" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentIncomeNet_b530852c-f3b4-4819-8862-9b7c5fa73808" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InvestmentIncomeNet"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_b0f47418-9320-43f5-9dda-ba5812b14e09" xlink:to="loc_us-gaap_InvestmentIncomeNet_b530852c-f3b4-4819-8862-9b7c5fa73808" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherNonoperatingIncomeExpense_74232331-34cc-4ad8-b44b-dba95e33ee33" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherNonoperatingIncomeExpense"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_b0f47418-9320-43f5-9dda-ba5812b14e09" xlink:to="loc_us-gaap_OtherNonoperatingIncomeExpense_74232331-34cc-4ad8-b44b-dba95e33ee33" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingIncomeLoss_1bf79ee2-6dff-4402-9192-3c6215bf3637" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingIncomeLoss"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_b0f47418-9320-43f5-9dda-ba5812b14e09" xlink:to="loc_us-gaap_OperatingIncomeLoss_1bf79ee2-6dff-4402-9192-3c6215bf3637" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_32dda0b3-ab51-42cf-a836-f8abc59f4cf1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetIncomeLoss"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_b4cd1c87-66b6-48cd-9615-54870425108a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetIncomeLoss_32dda0b3-ab51-42cf-a836-f8abc59f4cf1" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_b4cd1c87-66b6-48cd-9615-54870425108a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_b14b474a-ac2e-4627-b23a-907b508e9f78" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxExpenseBenefit"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetIncomeLoss_32dda0b3-ab51-42cf-a836-f8abc59f4cf1" xlink:to="loc_us-gaap_IncomeTaxExpenseBenefit_b14b474a-ac2e-4627-b23a-907b508e9f78" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingIncomeLoss_df10f938-62a2-45fd-a664-2ad72f7de1e3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingIncomeLoss"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GrossProfit_8b4348d0-2764-4d97-8072-9c69bb1ee368" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GrossProfit"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OperatingIncomeLoss_df10f938-62a2-45fd-a664-2ad72f7de1e3" xlink:to="loc_us-gaap_GrossProfit_8b4348d0-2764-4d97-8072-9c69bb1ee368" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingExpenses_06b457ad-5be1-428d-8eb2-815f1787f518" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingExpenses"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OperatingIncomeLoss_df10f938-62a2-45fd-a664-2ad72f7de1e3" xlink:to="loc_us-gaap_OperatingExpenses_06b457ad-5be1-428d-8eb2-815f1787f518" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingExpenses_efae7324-1bd0-4b66-b9e3-6357914c6da4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingExpenses"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_ef530c04-5f39-442f-8a49-e3535eedf303" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringCharges"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OperatingExpenses_efae7324-1bd0-4b66-b9e3-6357914c6da4" xlink:to="loc_us-gaap_RestructuringCharges_ef530c04-5f39-442f-8a49-e3535eedf303" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpense_1e58d21b-f507-4792-87d7-43e994eea87a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ResearchAndDevelopmentExpense"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OperatingExpenses_efae7324-1bd0-4b66-b9e3-6357914c6da4" xlink:to="loc_us-gaap_ResearchAndDevelopmentExpense_1e58d21b-f507-4792-87d7-43e994eea87a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SellingAndMarketingExpense_6d03a13a-1de4-41f6-87e2-c3ef353f7b30" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SellingAndMarketingExpense"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OperatingExpenses_efae7324-1bd0-4b66-b9e3-6357914c6da4" xlink:to="loc_us-gaap_SellingAndMarketingExpense_6d03a13a-1de4-41f6-87e2-c3ef353f7b30" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GeneralAndAdministrativeExpense_58a0b498-fadf-4544-a803-3de73dcd796c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GeneralAndAdministrativeExpense"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OperatingExpenses_efae7324-1bd0-4b66-b9e3-6357914c6da4" xlink:to="loc_us-gaap_GeneralAndAdministrativeExpense_58a0b498-fadf-4544-a803-3de73dcd796c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GrossProfit_4da2972e-9b77-4ee8-8b71-9b90e9a2dec9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GrossProfit"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_df1a5a7c-0cf5-4a4c-a3e8-5e019c5f7060" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_GrossProfit_4da2972e-9b77-4ee8-8b71-9b90e9a2dec9" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_df1a5a7c-0cf5-4a4c-a3e8-5e019c5f7060" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CostOfGoodsAndServicesSold_79c955e5-9a11-4934-aa06-8f7c6cb808a7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CostOfGoodsAndServicesSold"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_GrossProfit_4da2972e-9b77-4ee8-8b71-9b90e9a2dec9" xlink:to="loc_us-gaap_CostOfGoodsAndServicesSold_79c955e5-9a11-4934-aa06-8f7c6cb808a7" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NonoperatingIncomeExpense_a330a7bf-c81a-4bfb-a97c-2c17cc6459ea" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NonoperatingIncomeExpense"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentIncomeNet_ede35005-2ad9-47ed-a229-11c5f967196d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InvestmentIncomeNet"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NonoperatingIncomeExpense_a330a7bf-c81a-4bfb-a97c-2c17cc6459ea" xlink:to="loc_us-gaap_InvestmentIncomeNet_ede35005-2ad9-47ed-a229-11c5f967196d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherNonoperatingIncomeExpense_4b9c0769-cb83-47a2-9066-85b5a8c6028c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherNonoperatingIncomeExpense"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NonoperatingIncomeExpense_a330a7bf-c81a-4bfb-a97c-2c17cc6459ea" xlink:to="loc_us-gaap_OtherNonoperatingIncomeExpense_4b9c0769-cb83-47a2-9066-85b5a8c6028c" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/ConsolidatedStatementsofCashFlows" xlink:type="simple" xlink:href="calx-20221231.xsd#ConsolidatedStatementsofCashFlows"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/ConsolidatedStatementsofCashFlows" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_544e114d-4c38-46c5-adca-45e20cac13f6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromLinesOfCredit_9717e899-77c9-4b01-9c49-be771e895946" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProceedsFromLinesOfCredit"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_544e114d-4c38-46c5-adca-45e20cac13f6" xlink:to="loc_us-gaap_ProceedsFromLinesOfCredit_9717e899-77c9-4b01-9c49-be771e895946" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RepaymentsOfLinesOfCredit_3d3393f7-fe6e-444b-9ec2-b6528ce59284" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RepaymentsOfLinesOfCredit"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_544e114d-4c38-46c5-adca-45e20cac13f6" xlink:to="loc_us-gaap_RepaymentsOfLinesOfCredit_3d3393f7-fe6e-444b-9ec2-b6528ce59284" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PaymentsForFinancingArrangements_561824cd-f57d-4c28-825a-d8835b511f20" xlink:href="calx-20221231.xsd#calx_PaymentsForFinancingArrangements"/>
    <link:calculationArc order="3" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_544e114d-4c38-46c5-adca-45e20cac13f6" xlink:to="loc_calx_PaymentsForFinancingArrangements_561824cd-f57d-4c28-825a-d8835b511f20" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromStockOptionsExercised_7b833db8-a886-4c7e-96cd-1ba17e67129d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProceedsFromStockOptionsExercised"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_544e114d-4c38-46c5-adca-45e20cac13f6" xlink:to="loc_us-gaap_ProceedsFromStockOptionsExercised_7b833db8-a886-4c7e-96cd-1ba17e67129d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromIssuanceOfCommonStock_bc785348-8ef7-4f63-91ef-52639a5ab01d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProceedsFromIssuanceOfCommonStock"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_544e114d-4c38-46c5-adca-45e20cac13f6" xlink:to="loc_us-gaap_ProceedsFromIssuanceOfCommonStock_bc785348-8ef7-4f63-91ef-52639a5ab01d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_c700ea38-018b-4a4f-870f-6bb55b6cda23" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireMarketableSecurities_fe4ddac7-d9a3-4754-8702-1919263c755b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PaymentsToAcquireMarketableSecurities"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_c700ea38-018b-4a4f-870f-6bb55b6cda23" xlink:to="loc_us-gaap_PaymentsToAcquireMarketableSecurities_fe4ddac7-d9a3-4754-8702-1919263c755b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities_fc383a05-24e6-4813-b382-62b3dfa827f0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_c700ea38-018b-4a4f-870f-6bb55b6cda23" xlink:to="loc_us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities_fc383a05-24e6-4813-b382-62b3dfa827f0" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_f41bfdc4-107c-4263-8963-4a42b5b24f9a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment"/>
    <link:calculationArc order="3" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_c700ea38-018b-4a4f-870f-6bb55b6cda23" xlink:to="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_f41bfdc4-107c-4263-8963-4a42b5b24f9a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_beebb67d-b39a-4378-a3b0-d062099054c4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_4a7961d2-b0c9-4121-84cc-cdb68d19c5ae" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_beebb67d-b39a-4378-a3b0-d062099054c4" xlink:to="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_4a7961d2-b0c9-4121-84cc-cdb68d19c5ae" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_4f60c693-fefd-4b2d-b4f5-41cab5ca195e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_beebb67d-b39a-4378-a3b0-d062099054c4" xlink:to="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_4f60c693-fefd-4b2d-b4f5-41cab5ca195e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_a4fd7e0d-43ec-449a-a8f6-f212c4d54eb8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_beebb67d-b39a-4378-a3b0-d062099054c4" xlink:to="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_a4fd7e0d-43ec-449a-a8f6-f212c4d54eb8" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_e1cb367b-dec0-45e4-9f03-49b228d9435a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_beebb67d-b39a-4378-a3b0-d062099054c4" xlink:to="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_e1cb367b-dec0-45e4-9f03-49b228d9435a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_d84eb96c-c416-477a-b462-606a980b3dba" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Depreciation_b83a5200-b4cd-4b1d-9e9a-e95fbe189036" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Depreciation"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_d84eb96c-c416-477a-b462-606a980b3dba" xlink:to="loc_us-gaap_Depreciation_b83a5200-b4cd-4b1d-9e9a-e95fbe189036" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnDispositionOfAssets_5055b04e-abfb-4b70-8ed1-4913f1c0696d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GainLossOnDispositionOfAssets"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_d84eb96c-c416-477a-b462-606a980b3dba" xlink:to="loc_us-gaap_GainLossOnDispositionOfAssets_5055b04e-abfb-4b70-8ed1-4913f1c0696d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensation_9907bd11-8f6f-4bd2-9459-8bc299fa3664" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensation"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_d84eb96c-c416-477a-b462-606a980b3dba" xlink:to="loc_us-gaap_ShareBasedCompensation_9907bd11-8f6f-4bd2-9459-8bc299fa3664" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsReceivable_b80031fc-f61d-4865-8a2e-07437cf36441" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable"/>
    <link:calculationArc order="4" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_d84eb96c-c416-477a-b462-606a980b3dba" xlink:to="loc_us-gaap_IncreaseDecreaseInAccountsReceivable_b80031fc-f61d-4865-8a2e-07437cf36441" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInInventories_fb7306a1-6ca2-4047-86ab-4077a24e9636" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInInventories"/>
    <link:calculationArc order="5" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_d84eb96c-c416-477a-b462-606a980b3dba" xlink:to="loc_us-gaap_IncreaseDecreaseInInventories_fb7306a1-6ca2-4047-86ab-4077a24e9636" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_f475b4db-566e-4474-b766-0e9956181966" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets"/>
    <link:calculationArc order="6" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_d84eb96c-c416-477a-b462-606a980b3dba" xlink:to="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_f475b4db-566e-4474-b766-0e9956181966" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsPayable_e1d6287b-05e3-4da7-9965-618747a096ce" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInAccountsPayable"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_d84eb96c-c416-477a-b462-606a980b3dba" xlink:to="loc_us-gaap_IncreaseDecreaseInAccountsPayable_e1d6287b-05e3-4da7-9965-618747a096ce" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities_191a8a11-969c-4c92-8f96-184a998827ef" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInAccruedLiabilities"/>
    <link:calculationArc order="8" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_d84eb96c-c416-477a-b462-606a980b3dba" xlink:to="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities_191a8a11-969c-4c92-8f96-184a998827ef" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInDeferredRevenue_7602b2ca-101e-49d2-a352-2f936b29b2e2" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInDeferredRevenue"/>
    <link:calculationArc order="9" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_d84eb96c-c416-477a-b462-606a980b3dba" xlink:to="loc_us-gaap_IncreaseDecreaseInDeferredRevenue_7602b2ca-101e-49d2-a352-2f936b29b2e2" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities_b5c5a179-6c55-4773-a64d-078c90e2a591" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities"/>
    <link:calculationArc order="10" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_d84eb96c-c416-477a-b462-606a980b3dba" xlink:to="loc_us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities_b5c5a179-6c55-4773-a64d-078c90e2a591" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxesAndTaxCredits_5190aaab-d49d-4832-835a-fc766efd7d17" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxesAndTaxCredits"/>
    <link:calculationArc order="11" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_d84eb96c-c416-477a-b462-606a980b3dba" xlink:to="loc_us-gaap_DeferredIncomeTaxesAndTaxCredits_5190aaab-d49d-4832-835a-fc766efd7d17" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_d05c122f-3ae2-4f29-813b-cee59cd26ec0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments"/>
    <link:calculationArc order="12" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_d84eb96c-c416-477a-b462-606a980b3dba" xlink:to="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_d05c122f-3ae2-4f29-813b-cee59cd26ec0" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_a810c15e-7985-4066-8b6e-14f184d412a7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetIncomeLoss"/>
    <link:calculationArc order="13" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_d84eb96c-c416-477a-b462-606a980b3dba" xlink:to="loc_us-gaap_NetIncomeLoss_a810c15e-7985-4066-8b6e-14f184d412a7" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#CashCashEquivalentsandMarketableSecuritiesDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_calx_CashCashEquivalentsAndMarketableSecurities_f9cc9d80-5237-41d4-be68-9e9e55b3bcc1" xlink:href="calx-20221231.xsd#calx_CashCashEquivalentsAndMarketableSecurities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_c75a8ec6-04a2-437c-b498-2a5f22558f4b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_calx_CashCashEquivalentsAndMarketableSecurities_f9cc9d80-5237-41d4-be68-9e9e55b3bcc1" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_c75a8ec6-04a2-437c-b498-2a5f22558f4b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_988d9416-d363-4d2a-9df4-51e7e6feda8c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_calx_CashCashEquivalentsAndMarketableSecurities_f9cc9d80-5237-41d4-be68-9e9e55b3bcc1" xlink:to="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_988d9416-d363-4d2a-9df4-51e7e6feda8c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_28af3577-e2b6-474c-97b4-9686f39c545f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashEquivalentsAtCarryingValue_4e184262-f8f2-4576-922a-98143fce188b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashEquivalentsAtCarryingValue"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_28af3577-e2b6-474c-97b4-9686f39c545f" xlink:to="loc_us-gaap_CashEquivalentsAtCarryingValue_4e184262-f8f2-4576-922a-98143fce188b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash_8cf72ec7-6616-47b8-90f4-e60e80d63bd6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Cash"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_28af3577-e2b6-474c-97b4-9686f39c545f" xlink:to="loc_us-gaap_Cash_8cf72ec7-6616-47b8-90f4-e60e80d63bd6" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent_66e623ff-1145-492d-8fe8-aad211d81cf4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_aeaf3457-cf72-444b-ad94-ca75142a2557" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent_66e623ff-1145-492d-8fe8-aad211d81cf4" xlink:to="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_aeaf3457-cf72-444b-ad94-ca75142a2557" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_6a5b1524-1d3d-4049-bb8d-4203bd6f6ee1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent_66e623ff-1145-492d-8fe8-aad211d81cf4" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_6a5b1524-1d3d-4049-bb8d-4203bd6f6ee1" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/FairValueMeasurementsDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#FairValueMeasurementsDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/FairValueMeasurementsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsFairValueDisclosure_e50e5874-0371-42fd-b75b-908bad016ed6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AssetsFairValueDisclosure"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashEquivalentsAtCarryingValue_8c79e8de-aade-4c48-8df4-d43d261e2c8f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashEquivalentsAtCarryingValue"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AssetsFairValueDisclosure_e50e5874-0371-42fd-b75b-908bad016ed6" xlink:to="loc_us-gaap_CashEquivalentsAtCarryingValue_8c79e8de-aade-4c48-8df4-d43d261e2c8f" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_e83a5d0b-707f-451a-b897-0ca4aacc4de3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AssetsFairValueDisclosure_e50e5874-0371-42fd-b75b-908bad016ed6" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_e83a5d0b-707f-451a-b897-0ca4aacc4de3" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsAccountsReceivableDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsAccountsReceivableDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsAccountsReceivableDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableNetCurrent_058227ee-29e6-4de4-9aca-9b3cdc381e27" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsReceivableNetCurrent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableGrossCurrent_f3dccd0b-c207-49d4-955c-02520cc845d1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsReceivableGrossCurrent"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccountsReceivableNetCurrent_058227ee-29e6-4de4-9aca-9b3cdc381e27" xlink:to="loc_us-gaap_AccountsReceivableGrossCurrent_f3dccd0b-c207-49d4-955c-02520cc845d1" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent_31824245-a8cf-40b4-b224-52ee7ca61ed0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccountsReceivableNetCurrent_058227ee-29e6-4de4-9aca-9b3cdc381e27" xlink:to="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent_31824245-a8cf-40b4-b224-52ee7ca61ed0" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsInventoryDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsInventoryDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsInventoryDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryNet_faa79b25-2c1a-4262-8bd7-2b57a66f1d58" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InventoryNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryFinishedGoodsNetOfReserves_13d08251-d098-4fa9-a59f-afb6bb1f5ff3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InventoryFinishedGoodsNetOfReserves"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_InventoryNet_faa79b25-2c1a-4262-8bd7-2b57a66f1d58" xlink:to="loc_us-gaap_InventoryFinishedGoodsNetOfReserves_13d08251-d098-4fa9-a59f-afb6bb1f5ff3" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryRawMaterialsNetOfReserves_e75c28fa-9a90-44f0-ad0e-14187996697e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InventoryRawMaterialsNetOfReserves"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_InventoryNet_faa79b25-2c1a-4262-8bd7-2b57a66f1d58" xlink:to="loc_us-gaap_InventoryRawMaterialsNetOfReserves_e75c28fa-9a90-44f0-ad0e-14187996697e" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_b4c79ee5-0f26-421c-8af5-6b6dfbb79a91" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DepositsAssetsCurrent_5098c72b-9641-4c1b-8fdb-60ec171a0329" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DepositsAssetsCurrent"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_b4c79ee5-0f26-421c-8af5-6b6dfbb79a91" xlink:to="loc_us-gaap_DepositsAssetsCurrent_5098c72b-9641-4c1b-8fdb-60ec171a0329" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent_185f5bda-f3eb-40be-850f-af3784a0956c" xlink:href="calx-20221231.xsd#calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_b4c79ee5-0f26-421c-8af5-6b6dfbb79a91" xlink:to="loc_calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent_185f5bda-f3eb-40be-850f-af3784a0956c" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsPropertyandEquipmentnetDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_02d14e22-4fd6-4719-9919-33d15549bf8d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_f5d5dc34-43a1-4dbf-862a-1385b66f026b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentNet_02d14e22-4fd6-4719-9919-33d15549bf8d" xlink:to="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_f5d5dc34-43a1-4dbf-862a-1385b66f026b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentGross_2d64931c-fa25-466b-9093-b694d7494f9a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentGross"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentNet_02d14e22-4fd6-4719-9919-33d15549bf8d" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentGross_2d64931c-fa25-466b-9093-b694d7494f9a" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsIntangibleAssetAcquisitionDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAssetsNoncurrent_dc160828-22d7-4baf-9eed-15fe21f771a1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherAssetsNoncurrent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill_50d16999-265b-4589-b373-cb14e6084eb4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IntangibleAssetsNetExcludingGoodwill"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OtherAssetsNoncurrent_dc160828-22d7-4baf-9eed-15fe21f771a1" xlink:to="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill_50d16999-265b-4589-b373-cb14e6084eb4" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAssetsMiscellaneousNoncurrent_c56abd69-5e8a-4535-97a7-4458c119822b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherAssetsMiscellaneousNoncurrent"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OtherAssetsNoncurrent_dc160828-22d7-4baf-9eed-15fe21f771a1" xlink:to="loc_us-gaap_OtherAssetsMiscellaneousNoncurrent_c56abd69-5e8a-4535-97a7-4458c119822b" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsAccruedLiabilitiesDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent_077f0a44-e185-4af7-8188-3a77910ef572" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccruedLiabilitiesCurrent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAccruedLiabilitiesCurrent_287af85a-2982-4c7e-a5e9-b9ddeb53fd57" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherAccruedLiabilitiesCurrent"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_077f0a44-e185-4af7-8188-3a77910ef572" xlink:to="loc_us-gaap_OtherAccruedLiabilitiesCurrent_287af85a-2982-4c7e-a5e9-b9ddeb53fd57" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes_a41d4f4a-e482-4d01-b7a0-eb9de05f2d02" xlink:href="calx-20221231.xsd#calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_077f0a44-e185-4af7-8188-3a77910ef572" xlink:to="loc_calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes_a41d4f4a-e482-4d01-b7a0-eb9de05f2d02" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedFreight_3babb5e9-e7c9-4a5c-96b3-f9ac353dc622" xlink:href="calx-20221231.xsd#calx_AccruedFreight"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_077f0a44-e185-4af7-8188-3a77910ef572" xlink:to="loc_calx_AccruedFreight_3babb5e9-e7c9-4a5c-96b3-f9ac353dc622" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityCurrent_f2f9ccea-1d20-4be5-990c-65d744a7c5ca" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiabilityCurrent"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_077f0a44-e185-4af7-8188-3a77910ef572" xlink:to="loc_us-gaap_OperatingLeaseLiabilityCurrent_f2f9ccea-1d20-4be5-990c-65d744a7c5ca" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent_48df5b4b-9070-4744-8cb5-23bfd905691a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProductWarrantyAccrualClassifiedCurrent"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_077f0a44-e185-4af7-8188-3a77910ef572" xlink:to="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent_48df5b4b-9070-4744-8cb5-23bfd905691a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer_ab118339-93a9-4d80-88d6-da4811bef858" xlink:href="calx-20221231.xsd#calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_077f0a44-e185-4af7-8188-3a77910ef572" xlink:to="loc_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer_ab118339-93a9-4d80-88d6-da4811bef858" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedCustomerRebates_e07b8b89-1fdf-4f66-abfb-5fafb9c068b1" xlink:href="calx-20221231.xsd#calx_AccruedCustomerRebates"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_077f0a44-e185-4af7-8188-3a77910ef572" xlink:to="loc_calx_AccruedCustomerRebates_e07b8b89-1fdf-4f66-abfb-5fafb9c068b1" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeRelatedLiabilitiesCurrent_022d983e-d5b2-442a-9e4c-fb4191d0a10c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent"/>
    <link:calculationArc order="8" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_077f0a44-e185-4af7-8188-3a77910ef572" xlink:to="loc_us-gaap_EmployeeRelatedLiabilitiesCurrent_022d983e-d5b2-442a-9e4c-fb4191d0a10c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedRevenueSharePaymentsCurrent_306755ba-b65e-405a-8457-ee95e9f9dad8" xlink:href="calx-20221231.xsd#calx_AccruedRevenueSharePaymentsCurrent"/>
    <link:calculationArc order="9" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_077f0a44-e185-4af7-8188-3a77910ef572" xlink:to="loc_calx_AccruedRevenueSharePaymentsCurrent_306755ba-b65e-405a-8457-ee95e9f9dad8" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ProductReturnReserveCurrent_e25c25f1-71fd-4f7c-a98a-bbbfed05c752" xlink:href="calx-20221231.xsd#calx_ProductReturnReserveCurrent"/>
    <link:calculationArc order="10" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_077f0a44-e185-4af7-8188-3a77910ef572" xlink:to="loc_calx_ProductReturnReserveCurrent_e25c25f1-71fd-4f7c-a98a-bbbfed05c752" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedProfessionalFeesCurrent_ce8dd2ee-62d3-4588-93cb-7466fed7340b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccruedProfessionalFeesCurrent"/>
    <link:calculationArc order="11" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_077f0a44-e185-4af7-8188-3a77910ef572" xlink:to="loc_us-gaap_AccruedProfessionalFeesCurrent_ce8dd2ee-62d3-4588-93cb-7466fed7340b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedBusinessEventsCurrent_c89f6ce3-4bb6-40fe-a1c1-325d1c820d5d" xlink:href="calx-20221231.xsd#calx_AccruedBusinessEventsCurrent"/>
    <link:calculationArc order="12" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_077f0a44-e185-4af7-8188-3a77910ef572" xlink:to="loc_calx_AccruedBusinessEventsCurrent_c89f6ce3-4bb6-40fe-a1c1-325d1c820d5d" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#CommitmentsandContingenciesOperatingLeaseDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_447c366f-87f9-41b8-a50e-dd7d77435185" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount_963edef3-1f19-4ae1-800f-593e468e5264" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_447c366f-87f9-41b8-a50e-dd7d77435185" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount_963edef3-1f19-4ae1-800f-593e468e5264" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiability_05a62715-d84a-4ef1-b31d-02645abb8071" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiability"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_447c366f-87f9-41b8-a50e-dd7d77435185" xlink:to="loc_us-gaap_OperatingLeaseLiability_05a62715-d84a-4ef1-b31d-02645abb8071" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails_1" xlink:type="simple" xlink:href="calx-20221231.xsd#CommitmentsandContingenciesOperatingLeaseDetails_1"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails_1" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_c3a7f09f-c865-4b8a-8a3a-227a39166a6c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_bd223407-18c1-4457-9339-d7c6b6070bf0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_c3a7f09f-c865-4b8a-8a3a-227a39166a6c" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_bd223407-18c1-4457-9339-d7c6b6070bf0" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_66d9346b-aea1-44c7-a94e-68b4d7364a65" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_c3a7f09f-c865-4b8a-8a3a-227a39166a6c" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_66d9346b-aea1-44c7-a94e-68b4d7364a65" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_bccc63ab-0ce6-4284-9121-ecd30c7e46bf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_c3a7f09f-c865-4b8a-8a3a-227a39166a6c" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_bccc63ab-0ce6-4284-9121-ecd30c7e46bf" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_8621228d-4781-4273-9d4e-55fb6a601575" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_c3a7f09f-c865-4b8a-8a3a-227a39166a6c" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_8621228d-4781-4273-9d4e-55fb6a601575" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#CommitmentsandContingenciesSubleaseDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceived_fce63152-dd56-4422-8a31-25a0c851996b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeasePaymentsToBeReceived"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths_37ade48b-bac4-46d8-b501-513820553816" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceived_fce63152-dd56-4422-8a31-25a0c851996b" xlink:to="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths_37ade48b-bac4-46d8-b501-513820553816" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears_9cf3d9c2-bcd2-4f2c-8673-b0b0e8e2a1b5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceived_fce63152-dd56-4422-8a31-25a0c851996b" xlink:to="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears_9cf3d9c2-bcd2-4f2c-8673-b0b0e8e2a1b5" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears_01285c7e-6110-47a7-817b-01849b9cc8e0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceived_fce63152-dd56-4422-8a31-25a0c851996b" xlink:to="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears_01285c7e-6110-47a7-817b-01849b9cc8e0" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseLiabilityDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#CommitmentsandContingenciesOperatingLeaseLiabilityDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseLiabilityDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiability_02f6ff77-eb94-4d2a-a601-fde7baaa4a7a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiability"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityCurrent_424d58af-8533-4e75-b11b-cd705e14d704" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiabilityCurrent"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OperatingLeaseLiability_02f6ff77-eb94-4d2a-a601-fde7baaa4a7a" xlink:to="loc_us-gaap_OperatingLeaseLiabilityCurrent_424d58af-8533-4e75-b11b-cd705e14d704" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_ef1442de-d695-4aa6-bd20-68506a212a92" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OperatingLeaseLiability_02f6ff77-eb94-4d2a-a601-fde7baaa4a7a" xlink:to="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_ef1442de-d695-4aa6-bd20-68506a212a92" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_83d79946-3fa3-4f46-88ff-024c5c6d1b7f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_8a598c5b-c3a5-4e2c-9ffc-9f6667cceb77" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_83d79946-3fa3-4f46-88ff-024c5c6d1b7f" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_8a598c5b-c3a5-4e2c-9ffc-9f6667cceb77" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_450abb7e-8099-4a21-acb0-292ae793c5d4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_83d79946-3fa3-4f46-88ff-024c5c6d1b7f" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_450abb7e-8099-4a21-acb0-292ae793c5d4" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#IncomeTaxesComponentsofIncomeTaxProvisionDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_34158e31-be9c-4a82-aa7f-46ab2566552b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_1320550e-bbf8-4a68-b315-7e23ed50bf6e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_34158e31-be9c-4a82-aa7f-46ab2566552b" xlink:to="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_1320550e-bbf8-4a68-b315-7e23ed50bf6e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_cd5ebcf9-ebe6-40a8-ad29-e4971ea55c82" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_34158e31-be9c-4a82-aa7f-46ab2566552b" xlink:to="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_cd5ebcf9-ebe6-40a8-ad29-e4971ea55c82" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_17587d49-2838-47fd-a011-54793fb77f1c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_34158e31-be9c-4a82-aa7f-46ab2566552b" xlink:to="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_17587d49-2838-47fd-a011-54793fb77f1c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_0868b1bb-e47e-45da-80fe-20fa9441d782" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CurrentIncomeTaxExpenseBenefit"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentForeignTaxExpenseBenefit_d7713a02-706f-499d-be73-32f2481cf2e0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CurrentForeignTaxExpenseBenefit"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_0868b1bb-e47e-45da-80fe-20fa9441d782" xlink:to="loc_us-gaap_CurrentForeignTaxExpenseBenefit_d7713a02-706f-499d-be73-32f2481cf2e0" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_dfa243c1-9b23-4a22-bff2-235ed53f0e00" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_0868b1bb-e47e-45da-80fe-20fa9441d782" xlink:to="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_dfa243c1-9b23-4a22-bff2-235ed53f0e00" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentFederalTaxExpenseBenefit_4f31cdba-9775-4589-803a-293036d2aece" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CurrentFederalTaxExpenseBenefit"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_0868b1bb-e47e-45da-80fe-20fa9441d782" xlink:to="loc_us-gaap_CurrentFederalTaxExpenseBenefit_4f31cdba-9775-4589-803a-293036d2aece" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_e4a51803-9c51-4731-84a4-55140aa87032" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxExpenseBenefit"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_c08063c9-1951-4459-8b26-825cfa04b39e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CurrentIncomeTaxExpenseBenefit"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_IncomeTaxExpenseBenefit_e4a51803-9c51-4731-84a4-55140aa87032" xlink:to="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_c08063c9-1951-4459-8b26-825cfa04b39e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_47368ebc-312a-4b6d-9205-e600a6981c8e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_IncomeTaxExpenseBenefit_e4a51803-9c51-4731-84a4-55140aa87032" xlink:to="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_47368ebc-312a-4b6d-9205-e600a6981c8e" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#IncomeTaxesIncomeTaxRateReconciliationDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_88dafea2-82d5-4aa2-b8dc-c1cf12e9b418" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_9a2dce97-1e50-4863-9a1a-4d7b3becbfea" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_88dafea2-82d5-4aa2-b8dc-c1cf12e9b418" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_9a2dce97-1e50-4863-9a1a-4d7b3becbfea" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_63bca684-324b-4a0b-83bb-905edabded19" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_88dafea2-82d5-4aa2-b8dc-c1cf12e9b418" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_63bca684-324b-4a0b-83bb-905edabded19" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_e0cff185-19b1-4b68-bafd-ddbe139eb9b3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_88dafea2-82d5-4aa2-b8dc-c1cf12e9b418" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_e0cff185-19b1-4b68-bafd-ddbe139eb9b3" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch_c2ac7b03-db96-478a-81bb-686e6e5c005d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch"/>
    <link:calculationArc order="4" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_88dafea2-82d5-4aa2-b8dc-c1cf12e9b418" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch_c2ac7b03-db96-478a-81bb-686e6e5c005d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent_9f12ee92-04d9-4b87-8d09-0147b9fc2cb5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_88dafea2-82d5-4aa2-b8dc-c1cf12e9b418" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent_9f12ee92-04d9-4b87-8d09-0147b9fc2cb5" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost_20c212e8-5b5b-483a-ab18-9a0ac99b9983" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_88dafea2-82d5-4aa2-b8dc-c1cf12e9b418" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost_20c212e8-5b5b-483a-ab18-9a0ac99b9983" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther_9dbb4bd9-326a-4766-98f4-cf67a260d199" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_88dafea2-82d5-4aa2-b8dc-c1cf12e9b418" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther_9dbb4bd9-326a-4766-98f4-cf67a260d199" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes_d93ee2ce-a778-4143-b7a9-4848f20f79ab" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes"/>
    <link:calculationArc order="8" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_88dafea2-82d5-4aa2-b8dc-c1cf12e9b418" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes_d93ee2ce-a778-4143-b7a9-4848f20f79ab" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance_20bf9f05-c31a-4c16-a6c9-6d6568e5d8d7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance"/>
    <link:calculationArc order="9" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_88dafea2-82d5-4aa2-b8dc-c1cf12e9b418" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance_20bf9f05-c31a-4c16-a6c9-6d6568e5d8d7" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss_4b5263cb-1bb4-4abe-ac31-9977c56a96e9" xlink:href="calx-20221231.xsd#calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss"/>
    <link:calculationArc order="10" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_88dafea2-82d5-4aa2-b8dc-c1cf12e9b418" xlink:to="loc_calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss_4b5263cb-1bb4-4abe-ac31-9977c56a96e9" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment_9c9ff2f8-db27-4601-bb0e-031a79824b7a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment"/>
    <link:calculationArc order="11" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_88dafea2-82d5-4aa2-b8dc-c1cf12e9b418" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment_9c9ff2f8-db27-4601-bb0e-031a79824b7a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent_94301458-b809-4a8a-8b1a-430ef1ac3866" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent"/>
    <link:calculationArc order="12" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_88dafea2-82d5-4aa2-b8dc-c1cf12e9b418" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent_94301458-b809-4a8a-8b1a-430ef1ac3866" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilities_e03ce9cb-e45f-4eb4-b80f-d1f859643833" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxLiabilities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets_16281827-2245-40b6-a55f-d5791cf71957" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredIncomeTaxLiabilities_e03ce9cb-e45f-4eb4-b80f-d1f859643833" xlink:to="loc_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets_16281827-2245-40b6-a55f-d5791cf71957" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment_794dbed9-94e1-47a3-8311-d8a93580c911" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredIncomeTaxLiabilities_e03ce9cb-e45f-4eb4-b80f-d1f859643833" xlink:to="loc_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment_794dbed9-94e1-47a3-8311-d8a93580c911" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsNet_8211b5dc-ef4e-417e-8bbe-a8e802966d4a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance_c77c43e5-ac7a-4dff-94ea-aa02d93fc79b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsValuationAllowance"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredTaxAssetsNet_8211b5dc-ef4e-417e-8bbe-a8e802966d4a" xlink:to="loc_us-gaap_DeferredTaxAssetsValuationAllowance_c77c43e5-ac7a-4dff-94ea-aa02d93fc79b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsGross_d7378cbd-dc24-49eb-82c5-34963539342d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsGross"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredTaxAssetsNet_8211b5dc-ef4e-417e-8bbe-a8e802966d4a" xlink:to="loc_us-gaap_DeferredTaxAssetsGross_d7378cbd-dc24-49eb-82c5-34963539342d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet_4182dd01-bb0b-4879-b2eb-14bc4bb0816c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsLiabilitiesNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilities_764eb10d-3de5-4144-81bf-cceac6a9fba3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxLiabilities"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet_4182dd01-bb0b-4879-b2eb-14bc4bb0816c" xlink:to="loc_us-gaap_DeferredIncomeTaxLiabilities_764eb10d-3de5-4144-81bf-cceac6a9fba3" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsNet_daf43a2c-b08c-4f02-981e-317a3092fb99" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsNet"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet_4182dd01-bb0b-4879-b2eb-14bc4bb0816c" xlink:to="loc_us-gaap_DeferredTaxAssetsNet_daf43a2c-b08c-4f02-981e-317a3092fb99" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsGross_f4c4b536-5208-4e19-8219-88a8f05a7aa0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsGross"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities_7b865beb-ea76-40da-9660-c4fd76d03166" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredTaxAssetsGross_f4c4b536-5208-4e19-8219-88a8f05a7aa0" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities_7b865beb-ea76-40da-9660-c4fd76d03166" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardAmount_9335bc8c-f963-46b2-af98-9a430bb335a9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TaxCreditCarryforwardAmount"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredTaxAssetsGross_f4c4b536-5208-4e19-8219-88a8f05a7aa0" xlink:to="loc_us-gaap_TaxCreditCarryforwardAmount_9335bc8c-f963-46b2-af98-9a430bb335a9" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards_0cc626ad-5b9c-4f9d-aeca-6f92d9d91854" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwards"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredTaxAssetsGross_f4c4b536-5208-4e19-8219-88a8f05a7aa0" xlink:to="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards_0cc626ad-5b9c-4f9d-aeca-6f92d9d91854" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsDeferredIncome_13e02bae-c1e9-4505-8e99-0f2c4cd3b010" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsDeferredIncome"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredTaxAssetsGross_f4c4b536-5208-4e19-8219-88a8f05a7aa0" xlink:to="loc_us-gaap_DeferredTaxAssetsDeferredIncome_13e02bae-c1e9-4505-8e99-0f2c4cd3b010" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_42bcf35c-c10c-43b5-b365-d8f8114097b0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredTaxAssetsGross_f4c4b536-5208-4e19-8219-88a8f05a7aa0" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_42bcf35c-c10c-43b5-b365-d8f8114097b0" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts_a526d498-22b7-4f70-bcd7-7de14a24b9e3" xlink:href="calx-20221231.xsd#calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredTaxAssetsGross_f4c4b536-5208-4e19-8219-88a8f05a7aa0" xlink:to="loc_calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts_a526d498-22b7-4f70-bcd7-7de14a24b9e3" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails"/>
  <link:calculationLink xlink:role="http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_de116958-ddf5-4faa-96ba-e94b4c2c72c8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements_9e5f9729-2d6a-4641-9d52-5faa7bfcb77b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_de116958-ddf5-4faa-96ba-e94b4c2c72c8" xlink:to="loc_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements_9e5f9729-2d6a-4641-9d52-5faa7bfcb77b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_2856b7f8-4836-4947-84b4-0982bef93c10" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_de116958-ddf5-4faa-96ba-e94b4c2c72c8" xlink:to="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_2856b7f8-4836-4947-84b4-0982bef93c10" xlink:type="arc"/>
  </link:calculationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.DEF
<SEQUENCE>9
<FILENAME>calx-20221231_def.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION DEFINITION LINKBASE DOCUMENT
<TEXT>
<XBRL>
<?xml version="1.0" encoding="UTF-8"?>

<!--XBRL Document Created with Wdesk from Workiva-->
<!--Copyright 2023 Workiva-->
<!--r:65ceb81b-1301-4d03-a3b5-a19a3f419a3b,g:9d9ffaaa-0d49-4a33-8fc4-ed994a16f30c-->
<link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/all" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#all"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#hypercube-dimension"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-default"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-domain"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/domain-member" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#domain-member"/>
  <link:roleRef roleURI="http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity" xlink:type="simple" xlink:href="calx-20221231.xsd#ConsolidatedStatementsofStockholdersEquity"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity" xlink:type="extended" id="id2efbd3e5d604164a772f435e674cd10_ConsolidatedStatementsofStockholdersEquity">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementLineItems_a87d7cbd-3ff4-46ba-b845-68db4df885b8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInStockholdersEquityRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_StatementLineItems_a87d7cbd-3ff4-46ba-b845-68db4df885b8" xlink:to="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesOutstanding_0cb07742-2f1a-4e38-90ab-d542fe21781a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockSharesOutstanding"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_CommonStockSharesOutstanding_0cb07742-2f1a-4e38-90ab-d542fe21781a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_f2e9e747-4525-439a-b96c-a07f07d5fb24" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockholdersEquity"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_StockholdersEquity_f2e9e747-4525-439a-b96c-a07f07d5fb24" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_6b5803ea-34c7-40c6-a1e7-cde14dce4ce1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_6b5803ea-34c7-40c6-a1e7-cde14dce4ce1" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation_ff7b91e4-0485-4795-a875-09f9773323aa" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation_ff7b91e4-0485-4795-a875-09f9773323aa" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation_36e46b8b-517d-4521-81d9-4c846fc4e9d1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation_36e46b8b-517d-4521-81d9-4c846fc4e9d1" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesNewIssues_77615cd1-2ce5-4603-af2b-9a7d028188a6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodSharesNewIssues"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_StockIssuedDuringPeriodSharesNewIssues_77615cd1-2ce5-4603-af2b-9a7d028188a6" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodValueNewIssues_84902d70-5a2f-49d2-8fe8-e8c6a73b6509" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodValueNewIssues"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_StockIssuedDuringPeriodValueNewIssues_84902d70-5a2f-49d2-8fe8-e8c6a73b6509" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue_0602ef42-8000-4f93-9c70-9f376127c9b0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue_0602ef42-8000-4f93-9c70-9f376127c9b0" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_885ddf07-22e4-4922-bd82-fcafbe1a9584" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetIncomeLoss"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_NetIncomeLoss_885ddf07-22e4-4922-bd82-fcafbe1a9584" xlink:type="arc" order="9"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_16cc935c-ff3b-46b6-bfa6-79d559601fd5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_16cc935c-ff3b-46b6-bfa6-79d559601fd5" xlink:type="arc" order="10"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesOutstanding_bf0c9a07-14f8-4ae2-8d57-9be6e1b0b887" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockSharesOutstanding"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_c4ec5de6-4436-4ae8-8362-7fed28bef5f7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockholdersEquity"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementTable_4268c830-51ff-47cf-b79c-b61b732e49fb" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_StatementLineItems_a87d7cbd-3ff4-46ba-b845-68db4df885b8" xlink:to="loc_us-gaap_StatementTable_4268c830-51ff-47cf-b79c-b61b732e49fb" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementEquityComponentsAxis_64b8310a-fe67-47da-b001-2302be1089cc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementEquityComponentsAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_StatementTable_4268c830-51ff-47cf-b79c-b61b732e49fb" xlink:to="loc_us-gaap_StatementEquityComponentsAxis_64b8310a-fe67-47da-b001-2302be1089cc" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_64b8310a-fe67-47da-b001-2302be1089cc_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityComponentDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_64b8310a-fe67-47da-b001-2302be1089cc" xlink:to="loc_us-gaap_EquityComponentDomain_64b8310a-fe67-47da-b001-2302be1089cc_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_40cbe640-ceec-45ef-9dde-0be57332a116" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityComponentDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_64b8310a-fe67-47da-b001-2302be1089cc" xlink:to="loc_us-gaap_EquityComponentDomain_40cbe640-ceec-45ef-9dde-0be57332a116" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockMember_2426cdd9-a245-4638-a263-87817e310412" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_40cbe640-ceec-45ef-9dde-0be57332a116" xlink:to="loc_us-gaap_CommonStockMember_2426cdd9-a245-4638-a263-87817e310412" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalMember_e509c4a3-1b53-4a72-ba62-756f6a221752" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AdditionalPaidInCapitalMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_40cbe640-ceec-45ef-9dde-0be57332a116" xlink:to="loc_us-gaap_AdditionalPaidInCapitalMember_e509c4a3-1b53-4a72-ba62-756f6a221752" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_05eefd7a-7f9c-4d0f-9325-ed0088e27e20" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_40cbe640-ceec-45ef-9dde-0be57332a116" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_05eefd7a-7f9c-4d0f-9325-ed0088e27e20" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsMember_4944b04f-0b7b-48a9-9df4-e4fd73bd5120" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RetainedEarningsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_40cbe640-ceec-45ef-9dde-0be57332a116" xlink:to="loc_us-gaap_RetainedEarningsMember_4944b04f-0b7b-48a9-9df4-e4fd73bd5120" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TreasuryStockCommonMember_3c6e30cf-6203-4cb4-bbab-92b8b95c3082" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TreasuryStockCommonMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_40cbe640-ceec-45ef-9dde-0be57332a116" xlink:to="loc_us-gaap_TreasuryStockCommonMember_3c6e30cf-6203-4cb4-bbab-92b8b95c3082" xlink:type="arc" order="4"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails" xlink:type="extended" id="i5550cd74878648f7aedc83d9d1747acb_DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentLineItems_85bf585f-e8ed-46ce-acd2-9b24daf973d5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife_84812ad3-db95-41c7-b3d4-69df8845b489" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_85bf585f-e8ed-46ce-acd2-9b24daf973d5" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife_84812ad3-db95-41c7-b3d4-69df8845b489" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_75bdcb4c-9d1e-45eb-8517-46f6a7e2c717" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfPropertyPlantAndEquipmentTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_85bf585f-e8ed-46ce-acd2-9b24daf973d5" xlink:to="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_75bdcb4c-9d1e-45eb-8517-46f6a7e2c717" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_a8386bdb-989b-4d37-bd74-b1492491ca35" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_75bdcb4c-9d1e-45eb-8517-46f6a7e2c717" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_a8386bdb-989b-4d37-bd74-b1492491ca35" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_a8386bdb-989b-4d37-bd74-b1492491ca35_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_a8386bdb-989b-4d37-bd74-b1492491ca35" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_a8386bdb-989b-4d37-bd74-b1492491ca35_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_76147100-373f-4148-991e-53d163024eaa" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_a8386bdb-989b-4d37-bd74-b1492491ca35" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_76147100-373f-4148-991e-53d163024eaa" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComputerEquipmentMember_85b21e38-2499-4285-935e-189f4785168c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ComputerEquipmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_76147100-373f-4148-991e-53d163024eaa" xlink:to="loc_us-gaap_ComputerEquipmentMember_85b21e38-2499-4285-935e-189f4785168c" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComputerSoftwareIntangibleAssetMember_721ec2be-db3a-4011-af7d-6fc95de982ea" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ComputerSoftwareIntangibleAssetMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_76147100-373f-4148-991e-53d163024eaa" xlink:to="loc_us-gaap_ComputerSoftwareIntangibleAssetMember_721ec2be-db3a-4011-af7d-6fc95de982ea" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquipmentMember_ae2a9090-fb4d-4349-88a6-bc4e6787722d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquipmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_76147100-373f-4148-991e-53d163024eaa" xlink:to="loc_us-gaap_EquipmentMember_ae2a9090-fb4d-4349-88a6-bc4e6787722d" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FurnitureAndFixturesMember_9c3977a5-250e-4fad-80a8-5407e9461476" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FurnitureAndFixturesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_76147100-373f-4148-991e-53d163024eaa" xlink:to="loc_us-gaap_FurnitureAndFixturesMember_9c3977a5-250e-4fad-80a8-5407e9461476" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_2c8ab956-5784-4b0e-9dc6-66e3fdc56818" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_75bdcb4c-9d1e-45eb-8517-46f6a7e2c717" xlink:to="loc_srt_RangeAxis_2c8ab956-5784-4b0e-9dc6-66e3fdc56818" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_2c8ab956-5784-4b0e-9dc6-66e3fdc56818_default" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_2c8ab956-5784-4b0e-9dc6-66e3fdc56818" xlink:to="loc_srt_RangeMember_2c8ab956-5784-4b0e-9dc6-66e3fdc56818_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_e9a96705-45b5-4d17-9847-9330715c8fa5" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_2c8ab956-5784-4b0e-9dc6-66e3fdc56818" xlink:to="loc_srt_RangeMember_e9a96705-45b5-4d17-9847-9330715c8fa5" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_056a8ae2-2edc-4850-82b5-d6866d7f88ca" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_MinimumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_e9a96705-45b5-4d17-9847-9330715c8fa5" xlink:to="loc_srt_MinimumMember_056a8ae2-2edc-4850-82b5-d6866d7f88ca" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_affb463d-5f11-4569-8f79-1596fba2661e" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_e9a96705-45b5-4d17-9847-9330715c8fa5" xlink:to="loc_srt_MaximumMember_affb463d-5f11-4569-8f79-1596fba2661e" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail" xlink:type="simple" xlink:href="calx-20221231.xsd#DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail" xlink:type="extended" id="ia57c24facaab445c8f16c9192103f190_DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail">
    <link:loc xlink:type="locator" xlink:label="loc_calx_ScheduleOfCertainTermsLineItemsLineItems_19c87865-bb4d-4b19-9ebf-d97c7f658027" xlink:href="calx-20221231.xsd#calx_ScheduleOfCertainTermsLineItemsLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ProductWarrantyPeriod_f4e3c96d-2bbb-4edd-8853-308948497bc6" xlink:href="calx-20221231.xsd#calx_ProductWarrantyPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_calx_ScheduleOfCertainTermsLineItemsLineItems_19c87865-bb4d-4b19-9ebf-d97c7f658027" xlink:to="loc_calx_ProductWarrantyPeriod_f4e3c96d-2bbb-4edd-8853-308948497bc6" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash_1ff9a98a-e7d7-42ad-89cd-0544abb21d02" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Cash"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_calx_ScheduleOfCertainTermsLineItemsLineItems_19c87865-bb4d-4b19-9ebf-d97c7f658027" xlink:to="loc_us-gaap_Cash_1ff9a98a-e7d7-42ad-89cd-0544abb21d02" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillImpairmentLoss_416689bb-6d56-40c2-a826-d79a52ad9670" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GoodwillImpairmentLoss"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_calx_ScheduleOfCertainTermsLineItemsLineItems_19c87865-bb4d-4b19-9ebf-d97c7f658027" xlink:to="loc_us-gaap_GoodwillImpairmentLoss_416689bb-6d56-40c2-a826-d79a52ad9670" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance_12565652-3892-42e7-a493-f589be3ad208" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_calx_ScheduleOfCertainTermsLineItemsLineItems_19c87865-bb4d-4b19-9ebf-d97c7f658027" xlink:to="loc_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance_12565652-3892-42e7-a493-f589be3ad208" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance_5e9cc701-3939-4fab-ba24-a2badc86530f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsValuationAllowance"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_calx_ScheduleOfCertainTermsLineItemsLineItems_19c87865-bb4d-4b19-9ebf-d97c7f658027" xlink:to="loc_us-gaap_DeferredTaxAssetsValuationAllowance_5e9cc701-3939-4fab-ba24-a2badc86530f" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ScheduleOfCertainTermsTableTable_d5da9a14-864d-4082-9279-db6500f28fbd" xlink:href="calx-20221231.xsd#calx_ScheduleOfCertainTermsTableTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_calx_ScheduleOfCertainTermsLineItemsLineItems_19c87865-bb4d-4b19-9ebf-d97c7f658027" xlink:to="loc_calx_ScheduleOfCertainTermsTableTable_d5da9a14-864d-4082-9279-db6500f28fbd" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_e1908e0f-3af2-46b7-9220-930801750d9a" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_calx_ScheduleOfCertainTermsTableTable_d5da9a14-864d-4082-9279-db6500f28fbd" xlink:to="loc_srt_RangeAxis_e1908e0f-3af2-46b7-9220-930801750d9a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_e1908e0f-3af2-46b7-9220-930801750d9a_default" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_e1908e0f-3af2-46b7-9220-930801750d9a" xlink:to="loc_srt_RangeMember_e1908e0f-3af2-46b7-9220-930801750d9a_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_8f53c8a4-9c25-4f71-9684-55256301154c" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_e1908e0f-3af2-46b7-9220-930801750d9a" xlink:to="loc_srt_RangeMember_8f53c8a4-9c25-4f71-9684-55256301154c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_05b3fa91-dc5c-4c6e-9b6c-006e04137590" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_MinimumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_8f53c8a4-9c25-4f71-9684-55256301154c" xlink:to="loc_srt_MinimumMember_05b3fa91-dc5c-4c6e-9b6c-006e04137590" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_6fc347ed-7a1a-4207-ae97-43493948cd9a" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_8f53c8a4-9c25-4f71-9684-55256301154c" xlink:to="loc_srt_MaximumMember_6fc347ed-7a1a-4207-ae97-43493948cd9a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ConsolidatedEntitiesAxis_1a8f13b6-03d3-4248-abd3-a18ed6f65658" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ConsolidatedEntitiesAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_calx_ScheduleOfCertainTermsTableTable_d5da9a14-864d-4082-9279-db6500f28fbd" xlink:to="loc_srt_ConsolidatedEntitiesAxis_1a8f13b6-03d3-4248-abd3-a18ed6f65658" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ConsolidatedEntitiesDomain_1a8f13b6-03d3-4248-abd3-a18ed6f65658_default" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ConsolidatedEntitiesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_ConsolidatedEntitiesAxis_1a8f13b6-03d3-4248-abd3-a18ed6f65658" xlink:to="loc_srt_ConsolidatedEntitiesDomain_1a8f13b6-03d3-4248-abd3-a18ed6f65658_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ConsolidatedEntitiesDomain_20e22431-eae6-4e13-8ce8-8479754504ab" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ConsolidatedEntitiesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_ConsolidatedEntitiesAxis_1a8f13b6-03d3-4248-abd3-a18ed6f65658" xlink:to="loc_srt_ConsolidatedEntitiesDomain_20e22431-eae6-4e13-8ce8-8479754504ab" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SubsidiariesMember_96e2c6c6-1249-442b-87e7-aac603d685d5" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SubsidiariesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_ConsolidatedEntitiesDomain_20e22431-eae6-4e13-8ce8-8479754504ab" xlink:to="loc_srt_SubsidiariesMember_96e2c6c6-1249-442b-87e7-aac603d685d5" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_859c5d06-cca4-4178-aca9-dc320efc933c" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_StatementGeographicalAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_calx_ScheduleOfCertainTermsTableTable_d5da9a14-864d-4082-9279-db6500f28fbd" xlink:to="loc_srt_StatementGeographicalAxis_859c5d06-cca4-4178-aca9-dc320efc933c" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_859c5d06-cca4-4178-aca9-dc320efc933c_default" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_StatementGeographicalAxis_859c5d06-cca4-4178-aca9-dc320efc933c" xlink:to="loc_srt_SegmentGeographicalDomain_859c5d06-cca4-4178-aca9-dc320efc933c_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_53756451-188b-4d8e-9257-ee2a24c4631b" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_StatementGeographicalAxis_859c5d06-cca4-4178-aca9-dc320efc933c" xlink:to="loc_srt_SegmentGeographicalDomain_53756451-188b-4d8e-9257-ee2a24c4631b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_BrazilChinaAndUnitedKingdomMember_e854da6d-217a-4411-b474-929e2c7245fa" xlink:href="calx-20221231.xsd#calx_BrazilChinaAndUnitedKingdomMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_53756451-188b-4d8e-9257-ee2a24c4631b" xlink:to="loc_calx_BrazilChinaAndUnitedKingdomMember_e854da6d-217a-4411-b474-929e2c7245fa" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#CashCashEquivalentsandMarketableSecuritiesDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails" xlink:type="extended" id="i3da89a7bbcb241c69403ddda51889845_CashCashEquivalentsandMarketableSecuritiesDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash_1d76b92b-39e7-43f4-879a-6d49de640d66" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Cash"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:to="loc_us-gaap_Cash_1d76b92b-39e7-43f4-879a-6d49de640d66" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashEquivalentsAtCarryingValue_9e337fc8-ea06-43fe-acc2-32b7ecb70f43" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashEquivalentsAtCarryingValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:to="loc_us-gaap_CashEquivalentsAtCarryingValue_9e337fc8-ea06-43fe-acc2-32b7ecb70f43" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_47949f34-d72d-4a4a-b989-6f56b1dad1ca" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:to="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_47949f34-d72d-4a4a-b989-6f56b1dad1ca" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_971db2d5-526e-464b-9cc8-0e27cef58e3a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_971db2d5-526e-464b-9cc8-0e27cef58e3a" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CashCashEquivalentsAndMarketableSecurities_39468f7f-6248-4bb5-a500-5b77436d8615" xlink:href="calx-20221231.xsd#calx_CashCashEquivalentsAndMarketableSecurities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:to="loc_calx_CashCashEquivalentsAndMarketableSecurities_39468f7f-6248-4bb5-a500-5b77436d8615" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleTerm_1b0df09f-5fab-4092-a58e-26ab263852c8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleTerm"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleTerm_1b0df09f-5fab-4092-a58e-26ab263852c8" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTable_6bef55bb-3d89-4f58-8ff6-585c906d28bc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfCashAndCashEquivalentsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:to="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTable_6bef55bb-3d89-4f58-8ff6-585c906d28bc" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAxis_add4a386-4911-4ed4-bbd8-dd660ba8a9c7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTable_6bef55bb-3d89-4f58-8ff6-585c906d28bc" xlink:to="loc_us-gaap_CashAndCashEquivalentsAxis_add4a386-4911-4ed4-bbd8-dd660ba8a9c7" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_add4a386-4911-4ed4-bbd8-dd660ba8a9c7_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_CashAndCashEquivalentsAxis_add4a386-4911-4ed4-bbd8-dd660ba8a9c7" xlink:to="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_add4a386-4911-4ed4-bbd8-dd660ba8a9c7_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_d80cf9f8-22e0-42ac-a289-0de30c4a58e4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_CashAndCashEquivalentsAxis_add4a386-4911-4ed4-bbd8-dd660ba8a9c7" xlink:to="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_d80cf9f8-22e0-42ac-a289-0de30c4a58e4" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashMember_99eb019f-0d31-4170-ac09-28fd1caeb3d1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_d80cf9f8-22e0-42ac-a289-0de30c4a58e4" xlink:to="loc_us-gaap_CashMember_99eb019f-0d31-4170-ac09-28fd1caeb3d1" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommercialPaperMember_74c838b4-894d-4643-a24a-df07e16c3ce2" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommercialPaperMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_d80cf9f8-22e0-42ac-a289-0de30c4a58e4" xlink:to="loc_us-gaap_CommercialPaperMember_74c838b4-894d-4643-a24a-df07e16c3ce2" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentDebtSecuritiesMember_93c31a0d-b175-4ccd-8136-732a53e1b8d1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_d80cf9f8-22e0-42ac-a289-0de30c4a58e4" xlink:to="loc_us-gaap_USGovernmentDebtSecuritiesMember_93c31a0d-b175-4ccd-8136-732a53e1b8d1" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MoneyMarketFundsMember_958ce0f9-b54c-4aaa-921a-345372a30b4d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MoneyMarketFundsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_d80cf9f8-22e0-42ac-a289-0de30c4a58e4" xlink:to="loc_us-gaap_MoneyMarketFundsMember_958ce0f9-b54c-4aaa-921a-345372a30b4d" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateDebtSecuritiesMember_02d5dbf4-dc21-4871-b0d6-ccec4c3b75c3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CorporateDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_d80cf9f8-22e0-42ac-a289-0de30c4a58e4" xlink:to="loc_us-gaap_CorporateDebtSecuritiesMember_02d5dbf4-dc21-4871-b0d6-ccec4c3b75c3" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_406c62e8-82c3-4945-ae64-b07ecf367e8c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTable_6bef55bb-3d89-4f58-8ff6-585c906d28bc" xlink:to="loc_us-gaap_FinancialInstrumentAxis_406c62e8-82c3-4945-ae64-b07ecf367e8c" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_406c62e8-82c3-4945-ae64-b07ecf367e8c_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FinancialInstrumentAxis_406c62e8-82c3-4945-ae64-b07ecf367e8c" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_406c62e8-82c3-4945-ae64-b07ecf367e8c_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_75fc01f2-31a6-4105-b18f-d45a59abda24" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FinancialInstrumentAxis_406c62e8-82c3-4945-ae64-b07ecf367e8c" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_75fc01f2-31a6-4105-b18f-d45a59abda24" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentDebtSecuritiesMember_102dbfb7-0b88-48ad-bf78-0616e0d8febf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_75fc01f2-31a6-4105-b18f-d45a59abda24" xlink:to="loc_us-gaap_USGovernmentDebtSecuritiesMember_102dbfb7-0b88-48ad-bf78-0616e0d8febf" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommercialPaperMember_60321ad9-077b-4462-bfe0-b2d49c015626" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommercialPaperMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_75fc01f2-31a6-4105-b18f-d45a59abda24" xlink:to="loc_us-gaap_CommercialPaperMember_60321ad9-077b-4462-bfe0-b2d49c015626" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentAgenciesDebtSecuritiesMember_6b2fd713-b996-4dd8-bbce-e0ea5a475f31" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentAgenciesDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_75fc01f2-31a6-4105-b18f-d45a59abda24" xlink:to="loc_us-gaap_USGovernmentAgenciesDebtSecuritiesMember_6b2fd713-b996-4dd8-bbce-e0ea5a475f31" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateDebtSecuritiesMember_12109075-5729-43c6-a208-4a11e043325e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CorporateDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_75fc01f2-31a6-4105-b18f-d45a59abda24" xlink:to="loc_us-gaap_CorporateDebtSecuritiesMember_12109075-5729-43c6-a208-4a11e043325e" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalNotesMember_25aef531-5c12-418e-9676-d3989bf07e2d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MunicipalNotesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_75fc01f2-31a6-4105-b18f-d45a59abda24" xlink:to="loc_us-gaap_MunicipalNotesMember_25aef531-5c12-418e-9676-d3989bf07e2d" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_992bbfa0-bbe3-42bf-949e-0821835c6206" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTable_6bef55bb-3d89-4f58-8ff6-585c906d28bc" xlink:to="loc_srt_RangeAxis_992bbfa0-bbe3-42bf-949e-0821835c6206" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_992bbfa0-bbe3-42bf-949e-0821835c6206_default" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_992bbfa0-bbe3-42bf-949e-0821835c6206" xlink:to="loc_srt_RangeMember_992bbfa0-bbe3-42bf-949e-0821835c6206_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_c3c21d64-76f4-414f-8945-5eadf2011874" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_992bbfa0-bbe3-42bf-949e-0821835c6206" xlink:to="loc_srt_RangeMember_c3c21d64-76f4-414f-8945-5eadf2011874" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_9db422f7-0496-45cc-8814-c7ebed68f6b6" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_c3c21d64-76f4-414f-8945-5eadf2011874" xlink:to="loc_srt_MaximumMember_9db422f7-0496-45cc-8814-c7ebed68f6b6" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails" xlink:type="extended" id="i1ef5ed5ac7834f128b6bb7a7aff126bd_CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_52289a51-ad7e-4770-a5a6-07cd04d4e719" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent_c40ab620-abf7-4f9f-b127-5ef8779e71d6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_52289a51-ad7e-4770-a5a6-07cd04d4e719" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent_c40ab620-abf7-4f9f-b127-5ef8779e71d6" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_c686595f-aea4-41b5-b56e-2972d4c8e266" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_52289a51-ad7e-4770-a5a6-07cd04d4e719" xlink:to="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_c686595f-aea4-41b5-b56e-2972d4c8e266" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_cc41bd6d-a098-4fd2-816a-1156d05d27cb" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_52289a51-ad7e-4770-a5a6-07cd04d4e719" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_cc41bd6d-a098-4fd2-816a-1156d05d27cb" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleTable_cca145f2-47cb-4f5f-aa53-9525c0c2a4a7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_52289a51-ad7e-4770-a5a6-07cd04d4e719" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleTable_cca145f2-47cb-4f5f-aa53-9525c0c2a4a7" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_2a002ef4-f0bd-40ef-8b44-360d6997de01" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleTable_cca145f2-47cb-4f5f-aa53-9525c0c2a4a7" xlink:to="loc_us-gaap_FinancialInstrumentAxis_2a002ef4-f0bd-40ef-8b44-360d6997de01" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2a002ef4-f0bd-40ef-8b44-360d6997de01_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FinancialInstrumentAxis_2a002ef4-f0bd-40ef-8b44-360d6997de01" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2a002ef4-f0bd-40ef-8b44-360d6997de01_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_d6ba8d46-1adc-4e8d-a98c-daca21a241cf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FinancialInstrumentAxis_2a002ef4-f0bd-40ef-8b44-360d6997de01" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_d6ba8d46-1adc-4e8d-a98c-daca21a241cf" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentDebtSecuritiesMember_d63d2158-31ba-44e7-b3e5-9d5506a76166" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_d6ba8d46-1adc-4e8d-a98c-daca21a241cf" xlink:to="loc_us-gaap_USGovernmentDebtSecuritiesMember_d63d2158-31ba-44e7-b3e5-9d5506a76166" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommercialPaperMember_c67bd137-f403-40f2-842b-d9c51d1ff661" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommercialPaperMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_d6ba8d46-1adc-4e8d-a98c-daca21a241cf" xlink:to="loc_us-gaap_CommercialPaperMember_c67bd137-f403-40f2-842b-d9c51d1ff661" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentAgenciesDebtSecuritiesMember_ed1e654c-0672-4d7e-91a8-b47ede61d1e8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentAgenciesDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_d6ba8d46-1adc-4e8d-a98c-daca21a241cf" xlink:to="loc_us-gaap_USGovernmentAgenciesDebtSecuritiesMember_ed1e654c-0672-4d7e-91a8-b47ede61d1e8" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateDebtSecuritiesMember_68d7585f-f003-459a-8e39-c787348e0d42" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CorporateDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_d6ba8d46-1adc-4e8d-a98c-daca21a241cf" xlink:to="loc_us-gaap_CorporateDebtSecuritiesMember_68d7585f-f003-459a-8e39-c787348e0d42" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalNotesMember_f7bfdbc3-b2ca-4de4-83ca-ce5101b2ad81" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MunicipalNotesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_d6ba8d46-1adc-4e8d-a98c-daca21a241cf" xlink:to="loc_us-gaap_MunicipalNotesMember_f7bfdbc3-b2ca-4de4-83ca-ce5101b2ad81" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationAxis_a5592e37-9419-4bed-a0aa-2012482456a7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetLocationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleTable_cca145f2-47cb-4f5f-aa53-9525c0c2a4a7" xlink:to="loc_us-gaap_BalanceSheetLocationAxis_a5592e37-9419-4bed-a0aa-2012482456a7" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain_a5592e37-9419-4bed-a0aa-2012482456a7_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BalanceSheetLocationAxis_a5592e37-9419-4bed-a0aa-2012482456a7" xlink:to="loc_us-gaap_BalanceSheetLocationDomain_a5592e37-9419-4bed-a0aa-2012482456a7_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain_c342979b-9a8e-4398-beb8-1c02b4855996" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BalanceSheetLocationAxis_a5592e37-9419-4bed-a0aa-2012482456a7" xlink:to="loc_us-gaap_BalanceSheetLocationDomain_c342979b-9a8e-4398-beb8-1c02b4855996" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember_1f2df069-bfa7-4318-bc82-f554007334e1" xlink:href="calx-20221231.xsd#calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BalanceSheetLocationDomain_c342979b-9a8e-4398-beb8-1c02b4855996" xlink:to="loc_calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember_1f2df069-bfa7-4318-bc82-f554007334e1" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShortTermMarketableSecuritiesMember_87428955-f12e-41f9-9777-eb164858f9b8" xlink:href="calx-20221231.xsd#calx_ShortTermMarketableSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember_1f2df069-bfa7-4318-bc82-f554007334e1" xlink:to="loc_calx_ShortTermMarketableSecuritiesMember_87428955-f12e-41f9-9777-eb164858f9b8" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/FairValueMeasurementsDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#FairValueMeasurementsDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/FairValueMeasurementsDetails" xlink:type="extended" id="i649e1a837b12408c916dd41a7c9889f4_FairValueMeasurementsDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_7bfc38bb-11e1-47a9-a368-05f6914cb5c7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashEquivalentsAtCarryingValue_6626f6af-158f-4a2f-9dbd-36009c82e2e8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashEquivalentsAtCarryingValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_7bfc38bb-11e1-47a9-a368-05f6914cb5c7" xlink:to="loc_us-gaap_CashEquivalentsAtCarryingValue_6626f6af-158f-4a2f-9dbd-36009c82e2e8" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_39599d56-1a0b-4850-af6c-41aaab0aea04" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_7bfc38bb-11e1-47a9-a368-05f6914cb5c7" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_39599d56-1a0b-4850-af6c-41aaab0aea04" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsFairValueDisclosure_7b441aff-2ee4-4175-b210-c5eab6c15a26" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AssetsFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_7bfc38bb-11e1-47a9-a368-05f6914cb5c7" xlink:to="loc_us-gaap_AssetsFairValueDisclosure_7b441aff-2ee4-4175-b210-c5eab6c15a26" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d7047ec-3954-42fb-844a-0c1e620aed72" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_7bfc38bb-11e1-47a9-a368-05f6914cb5c7" xlink:to="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d7047ec-3954-42fb-844a-0c1e620aed72" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByMeasurementFrequencyAxis_e1ece357-0cb2-4765-adb0-b3dd15b98960" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueByMeasurementFrequencyAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d7047ec-3954-42fb-844a-0c1e620aed72" xlink:to="loc_us-gaap_FairValueByMeasurementFrequencyAxis_e1ece357-0cb2-4765-adb0-b3dd15b98960" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain_e1ece357-0cb2-4765-adb0-b3dd15b98960_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueMeasurementFrequencyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FairValueByMeasurementFrequencyAxis_e1ece357-0cb2-4765-adb0-b3dd15b98960" xlink:to="loc_us-gaap_FairValueMeasurementFrequencyDomain_e1ece357-0cb2-4765-adb0-b3dd15b98960_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain_caa81b5a-9ef6-48e7-8f82-583f2c05cd54" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueMeasurementFrequencyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FairValueByMeasurementFrequencyAxis_e1ece357-0cb2-4765-adb0-b3dd15b98960" xlink:to="loc_us-gaap_FairValueMeasurementFrequencyDomain_caa81b5a-9ef6-48e7-8f82-583f2c05cd54" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsRecurringMember_eae1b1c8-6d13-49e7-82b5-6540c8c76295" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueMeasurementsRecurringMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueMeasurementFrequencyDomain_caa81b5a-9ef6-48e7-8f82-583f2c05cd54" xlink:to="loc_us-gaap_FairValueMeasurementsRecurringMember_eae1b1c8-6d13-49e7-82b5-6540c8c76295" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAxis_cbe2938c-7c64-416a-bf16-8b7fa04f2ed1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d7047ec-3954-42fb-844a-0c1e620aed72" xlink:to="loc_us-gaap_CashAndCashEquivalentsAxis_cbe2938c-7c64-416a-bf16-8b7fa04f2ed1" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_cbe2938c-7c64-416a-bf16-8b7fa04f2ed1_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_CashAndCashEquivalentsAxis_cbe2938c-7c64-416a-bf16-8b7fa04f2ed1" xlink:to="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_cbe2938c-7c64-416a-bf16-8b7fa04f2ed1_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_6c505cf1-ff57-4d9b-8989-42a3cb475891" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_CashAndCashEquivalentsAxis_cbe2938c-7c64-416a-bf16-8b7fa04f2ed1" xlink:to="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_6c505cf1-ff57-4d9b-8989-42a3cb475891" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MoneyMarketFundsMember_2a0adfe1-5de4-423c-9efc-b549de1eb4bd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MoneyMarketFundsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_6c505cf1-ff57-4d9b-8989-42a3cb475891" xlink:to="loc_us-gaap_MoneyMarketFundsMember_2a0adfe1-5de4-423c-9efc-b549de1eb4bd" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_8e411f2f-aacf-4d48-8f16-e367bc38db6c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d7047ec-3954-42fb-844a-0c1e620aed72" xlink:to="loc_us-gaap_FinancialInstrumentAxis_8e411f2f-aacf-4d48-8f16-e367bc38db6c" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_8e411f2f-aacf-4d48-8f16-e367bc38db6c_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FinancialInstrumentAxis_8e411f2f-aacf-4d48-8f16-e367bc38db6c" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_8e411f2f-aacf-4d48-8f16-e367bc38db6c_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_1c795ef9-f4de-4874-807d-b9c1c976e615" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FinancialInstrumentAxis_8e411f2f-aacf-4d48-8f16-e367bc38db6c" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_1c795ef9-f4de-4874-807d-b9c1c976e615" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentDebtSecuritiesMember_89892a71-516b-4bb0-9810-c623cf1630f6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_1c795ef9-f4de-4874-807d-b9c1c976e615" xlink:to="loc_us-gaap_USGovernmentDebtSecuritiesMember_89892a71-516b-4bb0-9810-c623cf1630f6" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommercialPaperMember_c1f2be9a-b5f4-4856-9bf7-de13d044b2a5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommercialPaperMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_1c795ef9-f4de-4874-807d-b9c1c976e615" xlink:to="loc_us-gaap_CommercialPaperMember_c1f2be9a-b5f4-4856-9bf7-de13d044b2a5" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentAgenciesDebtSecuritiesMember_a69433fd-51fc-44f4-85a7-c179bb7e032d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentAgenciesDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_1c795ef9-f4de-4874-807d-b9c1c976e615" xlink:to="loc_us-gaap_USGovernmentAgenciesDebtSecuritiesMember_a69433fd-51fc-44f4-85a7-c179bb7e032d" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateDebtSecuritiesMember_24eb96de-1ea0-4654-b2f0-792a8e8879d6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CorporateDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_1c795ef9-f4de-4874-807d-b9c1c976e615" xlink:to="loc_us-gaap_CorporateDebtSecuritiesMember_24eb96de-1ea0-4654-b2f0-792a8e8879d6" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalNotesMember_1c36dcc3-e6c2-4839-9fa6-14a0509efb71" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MunicipalNotesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_1c795ef9-f4de-4874-807d-b9c1c976e615" xlink:to="loc_us-gaap_MunicipalNotesMember_1c36dcc3-e6c2-4839-9fa6-14a0509efb71" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_f15140b3-4676-4f06-9e86-65ad221475f5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d7047ec-3954-42fb-844a-0c1e620aed72" xlink:to="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_f15140b3-4676-4f06-9e86-65ad221475f5" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_f15140b3-4676-4f06-9e86-65ad221475f5_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_f15140b3-4676-4f06-9e86-65ad221475f5" xlink:to="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_f15140b3-4676-4f06-9e86-65ad221475f5_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_ebb5adec-f300-46d8-a6ee-5704982da59c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_f15140b3-4676-4f06-9e86-65ad221475f5" xlink:to="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_ebb5adec-f300-46d8-a6ee-5704982da59c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel1Member_8f86c367-731d-460f-b01a-5bc0aa84ffe8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueInputsLevel1Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_ebb5adec-f300-46d8-a6ee-5704982da59c" xlink:to="loc_us-gaap_FairValueInputsLevel1Member_8f86c367-731d-460f-b01a-5bc0aa84ffe8" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel2Member_6a424011-123a-4081-a8da-3a82f1d32ce5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueInputsLevel2Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_ebb5adec-f300-46d8-a6ee-5704982da59c" xlink:to="loc_us-gaap_FairValueInputsLevel2Member_6a424011-123a-4081-a8da-3a82f1d32ce5" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsAllowanceandProductReturnReserveDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails" xlink:type="extended" id="ib78afa25b3284de7bc788125c2c6dab3_BalanceSheetDetailsAllowanceandProductReturnReserveDetails">
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_a07c8de2-7ba6-42f6-8194-3710c69cac82" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ValuationAndQualifyingAccountsDisclosureLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_75fc3379-032e-46bd-a294-b6afbca158cd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MovementInValuationAllowancesAndReservesRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_a07c8de2-7ba6-42f6-8194-3710c69cac82" xlink:to="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_75fc3379-032e-46bd-a294-b6afbca158cd" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance_917143fc-bebc-47c6-9184-4fb043b073cf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesBalance"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_75fc3379-032e-46bd-a294-b6afbca158cd" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesBalance_917143fc-bebc-47c6-9184-4fb043b073cf" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_8a43fcd6-0d5a-4acf-8cc4-725e046e9f11" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_75fc3379-032e-46bd-a294-b6afbca158cd" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_8a43fcd6-0d5a-4acf-8cc4-725e046e9f11" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDeductions_ccb004da-14f2-4706-ac13-7b37acc4b3ae" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesDeductions"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_75fc3379-032e-46bd-a294-b6afbca158cd" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesDeductions_ccb004da-14f2-4706-ac13-7b37acc4b3ae" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance_f558df66-6023-4764-8baa-bafa96625fd6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesBalance"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_88d2bb1b-24af-4f31-aef9-6e046efaa9cf" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ValuationAndQualifyingAccountsDisclosureTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_a07c8de2-7ba6-42f6-8194-3710c69cac82" xlink:to="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_88d2bb1b-24af-4f31-aef9-6e046efaa9cf" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_f6bfd6d5-36cd-43bc-ae70-ca5c7caf1c9f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_88d2bb1b-24af-4f31-aef9-6e046efaa9cf" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_f6bfd6d5-36cd-43bc-ae70-ca5c7caf1c9f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDomain_f6bfd6d5-36cd-43bc-ae70-ca5c7caf1c9f_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_f6bfd6d5-36cd-43bc-ae70-ca5c7caf1c9f" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesDomain_f6bfd6d5-36cd-43bc-ae70-ca5c7caf1c9f_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDomain_7aae4d14-5441-4f9c-a0be-1b9067dcc024" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_f6bfd6d5-36cd-43bc-ae70-ca5c7caf1c9f" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesDomain_7aae4d14-5441-4f9c-a0be-1b9067dcc024" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForCreditLossMember_35d11e99-4d97-4fea-9cb5-4e07d798af71" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AllowanceForCreditLossMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDomain_7aae4d14-5441-4f9c-a0be-1b9067dcc024" xlink:to="loc_us-gaap_AllowanceForCreditLossMember_35d11e99-4d97-4fea-9cb5-4e07d798af71" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SECSchedule1209ReserveProductReturnsMember_a7bc622a-d913-4cc0-8737-ac070ed36d93" xlink:href="calx-20221231.xsd#calx_SECSchedule1209ReserveProductReturnsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDomain_7aae4d14-5441-4f9c-a0be-1b9067dcc024" xlink:to="loc_calx_SECSchedule1209ReserveProductReturnsMember_a7bc622a-d913-4cc0-8737-ac070ed36d93" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsPropertyandEquipmentnetDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails" xlink:type="extended" id="i17fa594e5d4d4dbc8c9ae0bdb60bec2b_BalanceSheetDetailsPropertyandEquipmentnetDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentLineItems_cb9ae062-0a5a-4023-92de-daf2946bfd0f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentGross_62347b7a-b149-407f-983b-7ddd868809e0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentGross"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_cb9ae062-0a5a-4023-92de-daf2946bfd0f" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentGross_62347b7a-b149-407f-983b-7ddd868809e0" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_1c5bd084-11eb-4ec2-9e36-656b94940168" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_cb9ae062-0a5a-4023-92de-daf2946bfd0f" xlink:to="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_1c5bd084-11eb-4ec2-9e36-656b94940168" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_2bf159be-9b98-480a-ad8f-ff4a9e051c90" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_cb9ae062-0a5a-4023-92de-daf2946bfd0f" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentNet_2bf159be-9b98-480a-ad8f-ff4a9e051c90" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_e59f9a32-0b3b-44f4-8952-491ad6347b13" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfPropertyPlantAndEquipmentTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_cb9ae062-0a5a-4023-92de-daf2946bfd0f" xlink:to="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_e59f9a32-0b3b-44f4-8952-491ad6347b13" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_51af387c-7cad-40ce-ad8b-84fa6cd0ef5b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_e59f9a32-0b3b-44f4-8952-491ad6347b13" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_51af387c-7cad-40ce-ad8b-84fa6cd0ef5b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_51af387c-7cad-40ce-ad8b-84fa6cd0ef5b_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_51af387c-7cad-40ce-ad8b-84fa6cd0ef5b" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_51af387c-7cad-40ce-ad8b-84fa6cd0ef5b_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ecebac2c-b6cb-46c1-8923-4dd34f949a24" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_51af387c-7cad-40ce-ad8b-84fa6cd0ef5b" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ecebac2c-b6cb-46c1-8923-4dd34f949a24" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquipmentMember_90a0bda9-78d0-4c27-b986-505276d650d3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquipmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ecebac2c-b6cb-46c1-8923-4dd34f949a24" xlink:to="loc_us-gaap_EquipmentMember_90a0bda9-78d0-4c27-b986-505276d650d3" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComputerEquipmentMember_f471e3ad-3e9f-4143-b7ef-72ce64fa61d6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ComputerEquipmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ecebac2c-b6cb-46c1-8923-4dd34f949a24" xlink:to="loc_us-gaap_ComputerEquipmentMember_f471e3ad-3e9f-4143-b7ef-72ce64fa61d6" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SoftwareMember_203f0b0e-48c5-4336-ae55-d29fff096748" xlink:href="calx-20221231.xsd#calx_SoftwareMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ecebac2c-b6cb-46c1-8923-4dd34f949a24" xlink:to="loc_calx_SoftwareMember_203f0b0e-48c5-4336-ae55-d29fff096748" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeaseholdImprovementsMember_440bfe96-818e-47fb-b8e4-747962460835" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LeaseholdImprovementsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ecebac2c-b6cb-46c1-8923-4dd34f949a24" xlink:to="loc_us-gaap_LeaseholdImprovementsMember_440bfe96-818e-47fb-b8e4-747962460835" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FurnitureAndFixturesMember_faff79b6-501f-47b1-93b4-7df272150aa8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FurnitureAndFixturesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ecebac2c-b6cb-46c1-8923-4dd34f949a24" xlink:to="loc_us-gaap_FurnitureAndFixturesMember_faff79b6-501f-47b1-93b4-7df272150aa8" xlink:type="arc" order="4"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsIntangibleAssetAcquisitionDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails" xlink:type="extended" id="i00dafe871d104543ac2b07f07e5a2e11_BalanceSheetDetailsIntangibleAssetAcquisitionDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FiniteLivedIntangibleAssetsLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill_0f164e98-be04-493e-9974-bd672a177d45" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IntangibleAssetsNetExcludingGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:to="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill_0f164e98-be04-493e-9974-bd672a177d45" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAssetsMiscellaneousNoncurrent_262f361f-88a0-4a2a-99ff-9f55f38a38dc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherAssetsMiscellaneousNoncurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:to="loc_us-gaap_OtherAssetsMiscellaneousNoncurrent_262f361f-88a0-4a2a-99ff-9f55f38a38dc" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAssetsNoncurrent_bdff09bb-1b64-4d4a-84cb-c0a5f7f5db3a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherAssetsNoncurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:to="loc_us-gaap_OtherAssetsNoncurrent_bdff09bb-1b64-4d4a-84cb-c0a5f7f5db3a" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RoyaltyGuaranteesCommitmentsAmount_13076a5a-c056-4260-9e0f-33f7e9d04b93" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RoyaltyGuaranteesCommitmentsAmount"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:to="loc_us-gaap_RoyaltyGuaranteesCommitmentsAmount_13076a5a-c056-4260-9e0f-33f7e9d04b93" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherLiabilities_0c0703fa-6468-4a1f-b065-3171a46445c0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherLiabilities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:to="loc_us-gaap_OtherLiabilities_0c0703fa-6468-4a1f-b065-3171a46445c0" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent_80a76d66-e71c-424e-b3ec-0d88efda1ce0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccruedLiabilitiesCurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:to="loc_us-gaap_AccruedLiabilitiesCurrent_80a76d66-e71c-424e-b3ec-0d88efda1ce0" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherLiabilitiesNoncurrent_4f2115a7-af2c-4b5d-96e3-b88d68124e1a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherLiabilitiesNoncurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:to="loc_us-gaap_OtherLiabilitiesNoncurrent_4f2115a7-af2c-4b5d-96e3-b88d68124e1a" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_20a1f7e2-bc3f-4e25-972d-2bb711c9213c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_20a1f7e2-bc3f-4e25-972d-2bb711c9213c" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_8ed85f4b-7416-4e53-bf33-3be1ac307c9e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_20a1f7e2-bc3f-4e25-972d-2bb711c9213c" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_8ed85f4b-7416-4e53-bf33-3be1ac307c9e" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_8ed85f4b-7416-4e53-bf33-3be1ac307c9e_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_8ed85f4b-7416-4e53-bf33-3be1ac307c9e" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_8ed85f4b-7416-4e53-bf33-3be1ac307c9e_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_ba5e0fad-b553-4655-94aa-415fb0b37163" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_8ed85f4b-7416-4e53-bf33-3be1ac307c9e" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_ba5e0fad-b553-4655-94aa-415fb0b37163" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComputerSoftwareIntangibleAssetMember_0cf0f229-cfdb-4cdf-a667-28081748ec52" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ComputerSoftwareIntangibleAssetMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_ba5e0fad-b553-4655-94aa-415fb0b37163" xlink:to="loc_us-gaap_ComputerSoftwareIntangibleAssetMember_0cf0f229-cfdb-4cdf-a667-28081748ec52" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsRestructuringDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails" xlink:type="extended" id="ie4c2b074285941f69c0279e366c47876_BalanceSheetDetailsRestructuringDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveLineItems_443e1794-216b-4989-9381-d93237703cf4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringCostAndReserveLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_a54e71f9-71db-4d33-8e9e-1d6eeecde72c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringCharges"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems_443e1794-216b-4989-9381-d93237703cf4" xlink:to="loc_us-gaap_RestructuringCharges_a54e71f9-71db-4d33-8e9e-1d6eeecde72c" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserve_3fe6bd72-2695-4df2-a6ee-6f6315319ae6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringReserve"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems_443e1794-216b-4989-9381-d93237703cf4" xlink:to="loc_us-gaap_RestructuringReserve_3fe6bd72-2695-4df2-a6ee-6f6315319ae6" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_46b5c706-97d1-4507-8a42-e1b72f6a84a9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfRestructuringAndRelatedCostsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems_443e1794-216b-4989-9381-d93237703cf4" xlink:to="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_46b5c706-97d1-4507-8a42-e1b72f6a84a9" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringPlanAxis_40d3a3db-c943-414c-b849-c5fe6b45ec03" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringPlanAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_46b5c706-97d1-4507-8a42-e1b72f6a84a9" xlink:to="loc_us-gaap_RestructuringPlanAxis_40d3a3db-c943-414c-b849-c5fe6b45ec03" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringPlanDomain_40d3a3db-c943-414c-b849-c5fe6b45ec03_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringPlanDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_RestructuringPlanAxis_40d3a3db-c943-414c-b849-c5fe6b45ec03" xlink:to="loc_us-gaap_RestructuringPlanDomain_40d3a3db-c943-414c-b849-c5fe6b45ec03_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringPlanDomain_9de90ba6-5969-4fa2-9ba3-4ddba0d559d0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringPlanDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_RestructuringPlanAxis_40d3a3db-c943-414c-b849-c5fe6b45ec03" xlink:to="loc_us-gaap_RestructuringPlanDomain_9de90ba6-5969-4fa2-9ba3-4ddba0d559d0" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember_3c53e291-3c23-4c04-a61c-c5c4d4a2678f" xlink:href="calx-20221231.xsd#calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringPlanDomain_9de90ba6-5969-4fa2-9ba3-4ddba0d559d0" xlink:to="loc_calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember_3c53e291-3c23-4c04-a61c-c5c4d4a2678f" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_12cb3112-1004-4fd1-9f12-435027b62999" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_StatementGeographicalAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_46b5c706-97d1-4507-8a42-e1b72f6a84a9" xlink:to="loc_srt_StatementGeographicalAxis_12cb3112-1004-4fd1-9f12-435027b62999" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_12cb3112-1004-4fd1-9f12-435027b62999_default" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_StatementGeographicalAxis_12cb3112-1004-4fd1-9f12-435027b62999" xlink:to="loc_srt_SegmentGeographicalDomain_12cb3112-1004-4fd1-9f12-435027b62999_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_ac3de07e-cbae-4129-aaa2-5cfd4d588160" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_StatementGeographicalAxis_12cb3112-1004-4fd1-9f12-435027b62999" xlink:to="loc_srt_SegmentGeographicalDomain_ac3de07e-cbae-4129-aaa2-5cfd4d588160" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SanJoseCaliforniaMember_81133e60-bcbb-4b53-b03d-e13ef95fcc0f" xlink:href="calx-20221231.xsd#calx_SanJoseCaliforniaMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_ac3de07e-cbae-4129-aaa2-5cfd4d588160" xlink:to="loc_calx_SanJoseCaliforniaMember_81133e60-bcbb-4b53-b03d-e13ef95fcc0f" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/CommitmentsandContingenciesTextualDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#CommitmentsandContingenciesTextualDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/CommitmentsandContingenciesTextualDetails" xlink:type="extended" id="i64f5616be81c415898ae3223ec673913_CommitmentsandContingenciesTextualDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LossContingenciesLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_542b0382-54fb-41a4-99e3-8a34ff8b776f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_542b0382-54fb-41a4-99e3-8a34ff8b776f" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_22b8391d-37d0-4b62-8236-cfdb039cc478" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_22b8391d-37d0-4b62-8236-cfdb039cc478" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_020e779c-b5cf-40b7-9126-7ed8b4a8f758" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_020e779c-b5cf-40b7-9126-7ed8b4a8f758" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseCost_e4d2923a-6940-45b8-a645-b94d7002113d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseCost"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_us-gaap_OperatingLeaseCost_e4d2923a-6940-45b8-a645-b94d7002113d" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeasePayments_4562699b-9df5-4e5b-95a3-45a13e3e8640" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeasePayments"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_us-gaap_OperatingLeasePayments_4562699b-9df5-4e5b-95a3-45a13e3e8640" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted_a0527839-e8b5-4a9e-ac1c-5990c8f56878" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted_a0527839-e8b5-4a9e-ac1c-5990c8f56878" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer_9c2687de-ddef-41d1-9e57-2cd4034011f9" xlink:href="calx-20221231.xsd#calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer_9c2687de-ddef-41d1-9e57-2cd4034011f9" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubleaseIncome_5d92cb29-2b54-447c-96f9-1057562921a8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubleaseIncome"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_us-gaap_SubleaseIncome_5d92cb29-2b54-447c-96f9-1057562921a8" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LossContingenciesTable_e9c757bd-5e67-4276-83da-e8316dd6936e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LossContingenciesTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_us-gaap_LossContingenciesTable_e9c757bd-5e67-4276-83da-e8316dd6936e" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_b90a025c-8dbf-4983-844d-0ef3afd18cab" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_StatementGeographicalAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_LossContingenciesTable_e9c757bd-5e67-4276-83da-e8316dd6936e" xlink:to="loc_srt_StatementGeographicalAxis_b90a025c-8dbf-4983-844d-0ef3afd18cab" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_b90a025c-8dbf-4983-844d-0ef3afd18cab_default" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_StatementGeographicalAxis_b90a025c-8dbf-4983-844d-0ef3afd18cab" xlink:to="loc_srt_SegmentGeographicalDomain_b90a025c-8dbf-4983-844d-0ef3afd18cab_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_549a869b-7dd7-4ad0-ace2-4d082b8b3bce" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_StatementGeographicalAxis_b90a025c-8dbf-4983-844d-0ef3afd18cab" xlink:to="loc_srt_SegmentGeographicalDomain_549a869b-7dd7-4ad0-ace2-4d082b8b3bce" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SanJoseCaliforniaMember_7a96e0b4-f855-4451-bc77-831f4c27df08" xlink:href="calx-20221231.xsd#calx_SanJoseCaliforniaMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_549a869b-7dd7-4ad0-ace2-4d082b8b3bce" xlink:to="loc_calx_SanJoseCaliforniaMember_7a96e0b4-f855-4451-bc77-831f4c27df08" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails" xlink:type="extended" id="ibeef06b9aa4c4afd9437ed372c1b1ca4_StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesAuthorized_711b2ea0-35a5-47da-bbe6-95055653d942" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockSharesAuthorized"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:to="loc_us-gaap_PreferredStockSharesAuthorized_711b2ea0-35a5-47da-bbe6-95055653d942" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesIssued_44e6a272-aeea-4cf8-9c52-4b1383ce27d2" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockSharesIssued"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:to="loc_us-gaap_PreferredStockSharesIssued_44e6a272-aeea-4cf8-9c52-4b1383ce27d2" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesOutstanding_3e73d72d-8b47-4502-b8f6-70a7dd91a874" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockSharesOutstanding"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:to="loc_us-gaap_PreferredStockSharesOutstanding_3e73d72d-8b47-4502-b8f6-70a7dd91a874" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockDividendsPerShareDeclared_a0bccdc5-a057-462a-869a-19b7052186d0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockDividendsPerShareDeclared"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:to="loc_us-gaap_CommonStockDividendsPerShareDeclared_a0bccdc5-a057-462a-869a-19b7052186d0" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction_06218a67-b704-47fe-a87b-46015626f17a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:to="loc_us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction_06218a67-b704-47fe-a87b-46015626f17a" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockParOrStatedValuePerShare_d00a23a7-85ed-44c4-a7c2-14192f0e1a9f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockParOrStatedValuePerShare"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:to="loc_us-gaap_CommonStockParOrStatedValuePerShare_d00a23a7-85ed-44c4-a7c2-14192f0e1a9f" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SaleOfStockConsiderationReceivedOnTransaction_f46e0943-edc0-4f48-8de7-1c8f21cee83c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SaleOfStockConsiderationReceivedOnTransaction"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:to="loc_us-gaap_SaleOfStockConsiderationReceivedOnTransaction_f46e0943-edc0-4f48-8de7-1c8f21cee83c" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_5515e223-6a4e-4ea9-aad7-99905b3b0ae5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_5515e223-6a4e-4ea9-aad7-99905b3b0ae5" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsidiarySaleOfStockAxis_a12b26bf-2b14-4653-9bf0-6ecf215bc61a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubsidiarySaleOfStockAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_5515e223-6a4e-4ea9-aad7-99905b3b0ae5" xlink:to="loc_us-gaap_SubsidiarySaleOfStockAxis_a12b26bf-2b14-4653-9bf0-6ecf215bc61a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SaleOfStockNameOfTransactionDomain_a12b26bf-2b14-4653-9bf0-6ecf215bc61a_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SaleOfStockNameOfTransactionDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_SubsidiarySaleOfStockAxis_a12b26bf-2b14-4653-9bf0-6ecf215bc61a" xlink:to="loc_us-gaap_SaleOfStockNameOfTransactionDomain_a12b26bf-2b14-4653-9bf0-6ecf215bc61a_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SaleOfStockNameOfTransactionDomain_8cc05cf2-d6b9-4018-be60-dff737158c04" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SaleOfStockNameOfTransactionDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_SubsidiarySaleOfStockAxis_a12b26bf-2b14-4653-9bf0-6ecf215bc61a" xlink:to="loc_us-gaap_SaleOfStockNameOfTransactionDomain_8cc05cf2-d6b9-4018-be60-dff737158c04" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PublicStockOfferingMember_6a7e1e62-e08f-4d74-8899-60bee46c43e4" xlink:href="calx-20221231.xsd#calx_PublicStockOfferingMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_SaleOfStockNameOfTransactionDomain_8cc05cf2-d6b9-4018-be60-dff737158c04" xlink:to="loc_calx_PublicStockOfferingMember_6a7e1e62-e08f-4d74-8899-60bee46c43e4" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OverAllotmentOptionMember_d01afc1f-2066-40c7-832f-db102ed994e7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OverAllotmentOptionMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_SaleOfStockNameOfTransactionDomain_8cc05cf2-d6b9-4018-be60-dff737158c04" xlink:to="loc_us-gaap_OverAllotmentOptionMember_d01afc1f-2066-40c7-832f-db102ed994e7" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityEquityIncentivePlansDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails" xlink:type="extended" id="i75108b61dd304b6dbe8e5626fbd80a2b_StockholdersEquityEquityIncentivePlansDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares_8e12bd85-0968-4e5d-a31b-40510a49c170" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares_8e12bd85-0968-4e5d-a31b-40510a49c170" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_9069d8cd-9e99-4c75-8267-0055e0ecfe87" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_9069d8cd-9e99-4c75-8267-0055e0ecfe87" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_MinimumExercisePriceOfStockOptionPercent_65597541-934b-423b-989c-c46af355474f" xlink:href="calx-20221231.xsd#calx_MinimumExercisePriceOfStockOptionPercent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_MinimumExercisePriceOfStockOptionPercent_65597541-934b-423b-989c-c46af355474f" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage_a87c256e-faaa-4e88-aaf5-ad15db13e71a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage_a87c256e-faaa-4e88-aaf5-ad15db13e71a" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_bbae5cf6-e931-44ff-83fa-aa621d9a2cee" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_bbae5cf6-e931-44ff-83fa-aa621d9a2cee" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ContractualTermStockOptions_6ae62ea8-dc5b-43fa-8237-b107090e40af" xlink:href="calx-20221231.xsd#calx_ContractualTermStockOptions"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ContractualTermStockOptions_6ae62ea8-dc5b-43fa-8237-b107090e40af" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross_70ec692c-ed71-454c-8e6f-7ce8fe77f92f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross_70ec692c-ed71-454c-8e6f-7ce8fe77f92f" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_be1c92ff-4707-4353-8459-fe5526d688b3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_be1c92ff-4707-4353-8459-fe5526d688b3" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1_24fb0d17-d23b-4889-a1cd-2f177492c6ef" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1_24fb0d17-d23b-4889-a1cd-2f177492c6ef" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent_c611f6f8-1628-4ffb-b58a-90aa43134703" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent_c611f6f8-1628-4ffb-b58a-90aa43134703" xlink:type="arc" order="9"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent_f942c725-4ac4-47ea-9858-8a02f1930687" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent_f942c725-4ac4-47ea-9858-8a02f1930687" xlink:type="arc" order="10"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet_41b38fd2-5d00-435b-84e2-f712efb29172" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet_41b38fd2-5d00-435b-84e2-f712efb29172" xlink:type="arc" order="11"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent_fdabc268-2f9b-4acf-b369-4c8dea109dc5" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent_fdabc268-2f9b-4acf-b369-4c8dea109dc5" xlink:type="arc" order="12"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent_82d53a19-7801-4faf-bf26-197d17d10b80" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent_82d53a19-7801-4faf-bf26-197d17d10b80" xlink:type="arc" order="13"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition_1d590a28-778e-48e9-9e4f-2e59102e8ec2" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition_1d590a28-778e-48e9-9e4f-2e59102e8ec2" xlink:type="arc" order="14"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PerformanceTargetsServicesConditionPeriod_499573ca-b3c4-495b-95b3-78ec9a01de66" xlink:href="calx-20221231.xsd#calx_PerformanceTargetsServicesConditionPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_PerformanceTargetsServicesConditionPeriod_499573ca-b3c4-495b-95b3-78ec9a01de66" xlink:type="arc" order="15"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensation_1ee4a36b-2572-4e5a-876b-a6848e096b70" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensation"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_us-gaap_ShareBasedCompensation_1ee4a36b-2572-4e5a-876b-a6848e096b70" xlink:type="arc" order="16"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2f3e7376-e11c-4afd-8a02-c7c5f4fd6506" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2f3e7376-e11c-4afd-8a02-c7c5f4fd6506" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameAxis_2b85119c-f87f-4e03-92da-26a5046ff8a3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2f3e7376-e11c-4afd-8a02-c7c5f4fd6506" xlink:to="loc_us-gaap_PlanNameAxis_2b85119c-f87f-4e03-92da-26a5046ff8a3" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameDomain_2b85119c-f87f-4e03-92da-26a5046ff8a3_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_PlanNameAxis_2b85119c-f87f-4e03-92da-26a5046ff8a3" xlink:to="loc_us-gaap_PlanNameDomain_2b85119c-f87f-4e03-92da-26a5046ff8a3_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameDomain_ef32a9dd-f772-4d48-b9f2-9d4f817135d5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_PlanNameAxis_2b85119c-f87f-4e03-92da-26a5046ff8a3" xlink:to="loc_us-gaap_PlanNameDomain_ef32a9dd-f772-4d48-b9f2-9d4f817135d5" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2019EquityIncentiveAwardPlanMember_16e918fa-6461-4bf7-9017-bc55e17adfd2" xlink:href="calx-20221231.xsd#calx_A2019EquityIncentiveAwardPlanMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PlanNameDomain_ef32a9dd-f772-4d48-b9f2-9d4f817135d5" xlink:to="loc_calx_A2019EquityIncentiveAwardPlanMember_16e918fa-6461-4bf7-9017-bc55e17adfd2" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2021PerformanceTargetsMember_66f916f4-2963-4c27-8ce1-399df7c23cf5" xlink:href="calx-20221231.xsd#calx_A2021PerformanceTargetsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PlanNameDomain_ef32a9dd-f772-4d48-b9f2-9d4f817135d5" xlink:to="loc_calx_A2021PerformanceTargetsMember_66f916f4-2963-4c27-8ce1-399df7c23cf5" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_8a72b450-5305-4a10-953d-26407525bdb3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AwardTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2f3e7376-e11c-4afd-8a02-c7c5f4fd6506" xlink:to="loc_us-gaap_AwardTypeAxis_8a72b450-5305-4a10-953d-26407525bdb3" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_8a72b450-5305-4a10-953d-26407525bdb3_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_AwardTypeAxis_8a72b450-5305-4a10-953d-26407525bdb3" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_8a72b450-5305-4a10-953d-26407525bdb3_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_03c2e0e3-efe2-4b72-9685-30bdb94dd14e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_AwardTypeAxis_8a72b450-5305-4a10-953d-26407525bdb3" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_03c2e0e3-efe2-4b72-9685-30bdb94dd14e" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_f3fe978d-3a68-4e1e-bc10-b08fcaae099e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_03c2e0e3-efe2-4b72-9685-30bdb94dd14e" xlink:to="loc_us-gaap_EmployeeStockOptionMember_f3fe978d-3a68-4e1e-bc10-b08fcaae099e" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PerformanceBasedStockOptionsMember_b6e6c4cb-4b8e-4c0f-a4a2-63b849ed2dd0" xlink:href="calx-20221231.xsd#calx_PerformanceBasedStockOptionsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_03c2e0e3-efe2-4b72-9685-30bdb94dd14e" xlink:to="loc_calx_PerformanceBasedStockOptionsMember_b6e6c4cb-4b8e-4c0f-a4a2-63b849ed2dd0" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_VestingAxis_72c08cbf-88f8-41fc-bc97-d648ab75acf7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_VestingAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2f3e7376-e11c-4afd-8a02-c7c5f4fd6506" xlink:to="loc_us-gaap_VestingAxis_72c08cbf-88f8-41fc-bc97-d648ab75acf7" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_VestingDomain_72c08cbf-88f8-41fc-bc97-d648ab75acf7_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_VestingDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_VestingAxis_72c08cbf-88f8-41fc-bc97-d648ab75acf7" xlink:to="loc_us-gaap_VestingDomain_72c08cbf-88f8-41fc-bc97-d648ab75acf7_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_VestingDomain_ff7ce7ac-7809-4615-934c-54c4b94eab12" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_VestingDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_VestingAxis_72c08cbf-88f8-41fc-bc97-d648ab75acf7" xlink:to="loc_us-gaap_VestingDomain_ff7ce7ac-7809-4615-934c-54c4b94eab12" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationAwardTrancheOneMember_92314dd0-dac7-43fc-aaf0-b270969a3a74" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationAwardTrancheOneMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_VestingDomain_ff7ce7ac-7809-4615-934c-54c4b94eab12" xlink:to="loc_us-gaap_ShareBasedCompensationAwardTrancheOneMember_92314dd0-dac7-43fc-aaf0-b270969a3a74" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationAwardTrancheTwoMember_654127c8-2c49-4f93-8cd4-7cded749b9e0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationAwardTrancheTwoMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_VestingDomain_ff7ce7ac-7809-4615-934c-54c4b94eab12" xlink:to="loc_us-gaap_ShareBasedCompensationAwardTrancheTwoMember_654127c8-2c49-4f93-8cd4-7cded749b9e0" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_TitleOfIndividualAxis_aa9eccbf-3468-4acb-aab3-b4a081f7dbf2" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_TitleOfIndividualAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2f3e7376-e11c-4afd-8a02-c7c5f4fd6506" xlink:to="loc_srt_TitleOfIndividualAxis_aa9eccbf-3468-4acb-aab3-b4a081f7dbf2" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_TitleOfIndividualWithRelationshipToEntityDomain_aa9eccbf-3468-4acb-aab3-b4a081f7dbf2_default" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_TitleOfIndividualAxis_aa9eccbf-3468-4acb-aab3-b4a081f7dbf2" xlink:to="loc_srt_TitleOfIndividualWithRelationshipToEntityDomain_aa9eccbf-3468-4acb-aab3-b4a081f7dbf2_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_TitleOfIndividualWithRelationshipToEntityDomain_a4c9efde-6edb-4884-b29a-cb6ad523841d" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_TitleOfIndividualAxis_aa9eccbf-3468-4acb-aab3-b4a081f7dbf2" xlink:to="loc_srt_TitleOfIndividualWithRelationshipToEntityDomain_a4c9efde-6edb-4884-b29a-cb6ad523841d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ExecutiveOfficerMember_c60c54e5-6863-439f-962b-6634de7e4a18" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ExecutiveOfficerMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_TitleOfIndividualWithRelationshipToEntityDomain_a4c9efde-6edb-4884-b29a-cb6ad523841d" xlink:to="loc_srt_ExecutiveOfficerMember_c60c54e5-6863-439f-962b-6634de7e4a18" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeAxis_22d15f60-23b9-4192-b278-d764436494b1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubsequentEventTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2f3e7376-e11c-4afd-8a02-c7c5f4fd6506" xlink:to="loc_us-gaap_SubsequentEventTypeAxis_22d15f60-23b9-4192-b278-d764436494b1" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeDomain_22d15f60-23b9-4192-b278-d764436494b1_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubsequentEventTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_SubsequentEventTypeAxis_22d15f60-23b9-4192-b278-d764436494b1" xlink:to="loc_us-gaap_SubsequentEventTypeDomain_22d15f60-23b9-4192-b278-d764436494b1_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeDomain_e999f07e-98ed-4f0a-81d5-85732f419c46" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubsequentEventTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_SubsequentEventTypeAxis_22d15f60-23b9-4192-b278-d764436494b1" xlink:to="loc_us-gaap_SubsequentEventTypeDomain_e999f07e-98ed-4f0a-81d5-85732f419c46" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventMember_8cdc8ffa-2eaa-4b2f-a6c2-e851d36096fd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubsequentEventMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_SubsequentEventTypeDomain_e999f07e-98ed-4f0a-81d5-85732f419c46" xlink:to="loc_us-gaap_SubsequentEventMember_8cdc8ffa-2eaa-4b2f-a6c2-e851d36096fd" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityFairValueofAwardsGrantedDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails" xlink:type="extended" id="iba452e745dca4349b91d46657a36cd66_StockholdersEquityFairValueofAwardsGrantedDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_acef54e2-08fa-42d7-83c0-7ced5311b4ac" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_9d9ac90b-f0f2-47ae-bdac-d909be9bba91" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_acef54e2-08fa-42d7-83c0-7ced5311b4ac" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_9d9ac90b-f0f2-47ae-bdac-d909be9bba91" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_acfe260f-0b1a-4354-837d-80b0d2e288dc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_acef54e2-08fa-42d7-83c0-7ced5311b4ac" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_acfe260f-0b1a-4354-837d-80b0d2e288dc" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_bcde45f3-32b6-48f2-8ba8-41f2deeeaa1f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_acef54e2-08fa-42d7-83c0-7ced5311b4ac" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_bcde45f3-32b6-48f2-8ba8-41f2deeeaa1f" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameAxis_73b7545f-c38f-4bdc-84ec-81f944141fee" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_bcde45f3-32b6-48f2-8ba8-41f2deeeaa1f" xlink:to="loc_us-gaap_PlanNameAxis_73b7545f-c38f-4bdc-84ec-81f944141fee" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameDomain_73b7545f-c38f-4bdc-84ec-81f944141fee_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_PlanNameAxis_73b7545f-c38f-4bdc-84ec-81f944141fee" xlink:to="loc_us-gaap_PlanNameDomain_73b7545f-c38f-4bdc-84ec-81f944141fee_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameDomain_c00e7f72-05f3-4534-86e7-d3e7009ebbe4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_PlanNameAxis_73b7545f-c38f-4bdc-84ec-81f944141fee" xlink:to="loc_us-gaap_PlanNameDomain_c00e7f72-05f3-4534-86e7-d3e7009ebbe4" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember_c6f272fe-9129-4ed8-b626-35f30b45a0d5" xlink:href="calx-20221231.xsd#calx_A2017NonqualifiedEmployeeStockPurchasePlanMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PlanNameDomain_c00e7f72-05f3-4534-86e7-d3e7009ebbe4" xlink:to="loc_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember_c6f272fe-9129-4ed8-b626-35f30b45a0d5" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_5235c8ef-d4ca-42bc-9b34-9b93a360293b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AwardTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_bcde45f3-32b6-48f2-8ba8-41f2deeeaa1f" xlink:to="loc_us-gaap_AwardTypeAxis_5235c8ef-d4ca-42bc-9b34-9b93a360293b" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_5235c8ef-d4ca-42bc-9b34-9b93a360293b_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_AwardTypeAxis_5235c8ef-d4ca-42bc-9b34-9b93a360293b" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_5235c8ef-d4ca-42bc-9b34-9b93a360293b_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f7b2f241-6a84-4d51-9659-fc8b35ba7c1b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_AwardTypeAxis_5235c8ef-d4ca-42bc-9b34-9b93a360293b" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f7b2f241-6a84-4d51-9659-fc8b35ba7c1b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockMember_8d62db37-d86d-4d77-a6cb-d9f9b10deedd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f7b2f241-6a84-4d51-9659-fc8b35ba7c1b" xlink:to="loc_us-gaap_EmployeeStockMember_8d62db37-d86d-4d77-a6cb-d9f9b10deedd" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityStockBasedCompensationExpenseDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails" xlink:type="extended" id="i981a2f13eaf5484bb1fcaefa399c514c_StockholdersEquityStockBasedCompensationExpenseDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_0334a1e4-ffdb-4dca-acd4-dccd17efaed1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllocatedShareBasedCompensationExpense_72b13d2c-5124-411b-8a39-b5146b9d43d6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AllocatedShareBasedCompensationExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_0334a1e4-ffdb-4dca-acd4-dccd17efaed1" xlink:to="loc_us-gaap_AllocatedShareBasedCompensationExpense_72b13d2c-5124-411b-8a39-b5146b9d43d6" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_bfb3f9aa-c418-4fbb-a004-2307c38d5578" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_0334a1e4-ffdb-4dca-acd4-dccd17efaed1" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_bfb3f9aa-c418-4fbb-a004-2307c38d5578" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PercentOfHistoricalVolatility_bc61d22f-6766-405a-b837-49105cfad7af" xlink:href="calx-20221231.xsd#calx_PercentOfHistoricalVolatility"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_0334a1e4-ffdb-4dca-acd4-dccd17efaed1" xlink:to="loc_calx_PercentOfHistoricalVolatility_bc61d22f-6766-405a-b837-49105cfad7af" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PercentOfImpliedVolatility_766e10f6-a81e-41f5-a04e-0cc3434750ad" xlink:href="calx-20221231.xsd#calx_PercentOfImpliedVolatility"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_0334a1e4-ffdb-4dca-acd4-dccd17efaed1" xlink:to="loc_calx_PercentOfImpliedVolatility_766e10f6-a81e-41f5-a04e-0cc3434750ad" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_06572598-fa0b-464a-9464-162cccdb753b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_0334a1e4-ffdb-4dca-acd4-dccd17efaed1" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_06572598-fa0b-464a-9464-162cccdb753b" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationAxis_74839b29-ef50-4bfd-97b4-0927b40d9469" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeStatementLocationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_06572598-fa0b-464a-9464-162cccdb753b" xlink:to="loc_us-gaap_IncomeStatementLocationAxis_74839b29-ef50-4bfd-97b4-0927b40d9469" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain_74839b29-ef50-4bfd-97b4-0927b40d9469_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeStatementLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IncomeStatementLocationAxis_74839b29-ef50-4bfd-97b4-0927b40d9469" xlink:to="loc_us-gaap_IncomeStatementLocationDomain_74839b29-ef50-4bfd-97b4-0927b40d9469_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain_cc530ee0-0922-49a7-adcd-e4218ef16176" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeStatementLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IncomeStatementLocationAxis_74839b29-ef50-4bfd-97b4-0927b40d9469" xlink:to="loc_us-gaap_IncomeStatementLocationDomain_cc530ee0-0922-49a7-adcd-e4218ef16176" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CostOfRevenueProductsMember_41944a30-8354-4b34-8024-33e83b22da94" xlink:href="calx-20221231.xsd#calx_CostOfRevenueProductsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_cc530ee0-0922-49a7-adcd-e4218ef16176" xlink:to="loc_calx_CostOfRevenueProductsMember_41944a30-8354-4b34-8024-33e83b22da94" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CostOfRevenueServicesMember_91a77800-3e1c-4873-a4b7-e42faa253253" xlink:href="calx-20221231.xsd#calx_CostOfRevenueServicesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_cc530ee0-0922-49a7-adcd-e4218ef16176" xlink:to="loc_calx_CostOfRevenueServicesMember_91a77800-3e1c-4873-a4b7-e42faa253253" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SellingAndMarketingExpenseMember_81e00abf-e9d3-432a-8b09-f16328fe315e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SellingAndMarketingExpenseMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_cc530ee0-0922-49a7-adcd-e4218ef16176" xlink:to="loc_us-gaap_SellingAndMarketingExpenseMember_81e00abf-e9d3-432a-8b09-f16328fe315e" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpenseMember_5bc2cee7-f563-4edf-8f7b-d94d4c7a4c0f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ResearchAndDevelopmentExpenseMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_cc530ee0-0922-49a7-adcd-e4218ef16176" xlink:to="loc_us-gaap_ResearchAndDevelopmentExpenseMember_5bc2cee7-f563-4edf-8f7b-d94d4c7a4c0f" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GeneralAndAdministrativeExpenseMember_bf272b44-896a-4105-99e9-55c8801407e0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GeneralAndAdministrativeExpenseMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_cc530ee0-0922-49a7-adcd-e4218ef16176" xlink:to="loc_us-gaap_GeneralAndAdministrativeExpenseMember_bf272b44-896a-4105-99e9-55c8801407e0" xlink:type="arc" order="4"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityESPPDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityESPPDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/StockholdersEquityESPPDetails" xlink:type="extended" id="i8367a65faa9f479eba98c53691931ed9_StockholdersEquityESPPDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate_8a5909c5-7093-4f0b-a5ee-ddc72201f923" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate_8a5909c5-7093-4f0b-a5ee-ddc72201f923" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee_83625f11-a5fc-45f4-8cf0-4335e255fb4d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee_83625f11-a5fc-45f4-8cf0-4335e255fb4d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods_202e9af0-a5c3-40a2-bf37-85b94ba6e2f2" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods_202e9af0-a5c3-40a2-bf37-85b94ba6e2f2" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod_ac4a5f8b-a4c5-4068-bf79-5eca8e19a25e" xlink:href="calx-20221231.xsd#calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod_ac4a5f8b-a4c5-4068-bf79-5eca8e19a25e" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent_ad45c667-c49f-4dfa-b26f-88c17ddab3ea" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent_ad45c667-c49f-4dfa-b26f-88c17ddab3ea" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized_bf0469d1-f2dc-4ed9-9d5c-ca9cfeda1b78" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized_bf0469d1-f2dc-4ed9-9d5c-ca9cfeda1b78" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized_b44f7f32-a176-45d3-9352-eef8db86e671" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized_b44f7f32-a176-45d3-9352-eef8db86e671" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_831c0306-03f7-4cea-966a-661d51837d2d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_831c0306-03f7-4cea-966a-661d51837d2d" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan_0c0c4656-be38-4725-866c-cc4dcd9f0854" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan_0c0c4656-be38-4725-866c-cc4dcd9f0854" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions_8c383186-4c51-4c2c-8b65-458586dc102d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions_8c383186-4c51-4c2c-8b65-458586dc102d" xlink:type="arc" order="9"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_0daa64e1-0497-4d91-9cf1-64c69efd1dce" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_0daa64e1-0497-4d91-9cf1-64c69efd1dce" xlink:type="arc" order="10"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent_db72f3d7-fddc-43d5-b6b1-f9cf877a6d07" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent_db72f3d7-fddc-43d5-b6b1-f9cf877a6d07" xlink:type="arc" order="11"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture_d62c4154-1d90-4194-9472-3ebedb8f0690" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture_d62c4154-1d90-4194-9472-3ebedb8f0690" xlink:type="arc" order="12"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod_aa307965-7b52-42e9-9378-5dfe37125e70" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod_aa307965-7b52-42e9-9378-5dfe37125e70" xlink:type="arc" order="13"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares_0cf56485-9126-48be-8c34-14f055c5e5dc" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares_0cf56485-9126-48be-8c34-14f055c5e5dc" xlink:type="arc" order="14"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod_61688637-dc96-47b9-bdad-9a32d38ddbf8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod_61688637-dc96-47b9-bdad-9a32d38ddbf8" xlink:type="arc" order="15"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward_9556352d-0835-475d-993f-525cb6986811" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward_9556352d-0835-475d-993f-525cb6986811" xlink:type="arc" order="16"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_31c821b7-76b6-4094-a67c-e9f90f255234" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_31c821b7-76b6-4094-a67c-e9f90f255234" xlink:type="arc" order="17"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_7e693c30-6c25-45ea-bb61-311a79fdb3b4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_7e693c30-6c25-45ea-bb61-311a79fdb3b4" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_6488ef06-570b-4a1f-99de-c986be1b10ad" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AwardTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_7e693c30-6c25-45ea-bb61-311a79fdb3b4" xlink:to="loc_us-gaap_AwardTypeAxis_6488ef06-570b-4a1f-99de-c986be1b10ad" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_6488ef06-570b-4a1f-99de-c986be1b10ad_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_AwardTypeAxis_6488ef06-570b-4a1f-99de-c986be1b10ad" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_6488ef06-570b-4a1f-99de-c986be1b10ad_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_19abec3b-5acf-4f78-8458-bd74fb2c6d4f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_AwardTypeAxis_6488ef06-570b-4a1f-99de-c986be1b10ad" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_19abec3b-5acf-4f78-8458-bd74fb2c6d4f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockMember_fa547d95-611b-44ba-a0ab-95423243bab1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_19abec3b-5acf-4f78-8458-bd74fb2c6d4f" xlink:to="loc_us-gaap_EmployeeStockMember_fa547d95-611b-44ba-a0ab-95423243bab1" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameAxis_4cb57425-9e93-419c-b803-25d6f7c2e7a2" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_7e693c30-6c25-45ea-bb61-311a79fdb3b4" xlink:to="loc_us-gaap_PlanNameAxis_4cb57425-9e93-419c-b803-25d6f7c2e7a2" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameDomain_4cb57425-9e93-419c-b803-25d6f7c2e7a2_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_PlanNameAxis_4cb57425-9e93-419c-b803-25d6f7c2e7a2" xlink:to="loc_us-gaap_PlanNameDomain_4cb57425-9e93-419c-b803-25d6f7c2e7a2_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameDomain_9a630e40-e878-4f50-887a-ec2b86f4962e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_PlanNameAxis_4cb57425-9e93-419c-b803-25d6f7c2e7a2" xlink:to="loc_us-gaap_PlanNameDomain_9a630e40-e878-4f50-887a-ec2b86f4962e" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember_d38843fc-71da-4b73-aaf7-9834edbeb825" xlink:href="calx-20221231.xsd#calx_A2017NonqualifiedEmployeeStockPurchasePlanMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PlanNameDomain_9a630e40-e878-4f50-887a-ec2b86f4962e" xlink:to="loc_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember_d38843fc-71da-4b73-aaf7-9834edbeb825" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EmployeeStockPurchasePlanMember_5ccd714f-0533-4b4f-807b-59d58f56f7d1" xlink:href="calx-20221231.xsd#calx_EmployeeStockPurchasePlanMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PlanNameDomain_9a630e40-e878-4f50-887a-ec2b86f4962e" xlink:to="loc_calx_EmployeeStockPurchasePlanMember_5ccd714f-0533-4b4f-807b-59d58f56f7d1" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityAssumptionsDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityAssumptionsDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/StockholdersEquityAssumptionsDetails" xlink:type="extended" id="i294e07fd212542cfbe06ecbcaa97656d_StockholdersEquityAssumptionsDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_3beca203-e52e-473e-82bf-b766ded95b63" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract_52da0c52-1c88-4012-ad5b-c309997674da" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_3beca203-e52e-473e-82bf-b766ded95b63" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract_52da0c52-1c88-4012-ad5b-c309997674da" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_dc3c7722-8df0-4627-a30a-3180357d1eb1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract_52da0c52-1c88-4012-ad5b-c309997674da" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_dc3c7722-8df0-4627-a30a-3180357d1eb1" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_9d5a8286-d005-452c-8a43-accaff3d52ce" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract_52da0c52-1c88-4012-ad5b-c309997674da" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_9d5a8286-d005-452c-8a43-accaff3d52ce" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_638fc76f-f273-4f01-89d0-13d0f279aff1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract_52da0c52-1c88-4012-ad5b-c309997674da" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_638fc76f-f273-4f01-89d0-13d0f279aff1" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_4062d51f-284b-4630-84f0-d0b3e5dc5cff" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_3beca203-e52e-473e-82bf-b766ded95b63" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_4062d51f-284b-4630-84f0-d0b3e5dc5cff" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_08862624-9758-4c55-b7a1-b278d41f3a2a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AwardTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_4062d51f-284b-4630-84f0-d0b3e5dc5cff" xlink:to="loc_us-gaap_AwardTypeAxis_08862624-9758-4c55-b7a1-b278d41f3a2a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_08862624-9758-4c55-b7a1-b278d41f3a2a_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_AwardTypeAxis_08862624-9758-4c55-b7a1-b278d41f3a2a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_08862624-9758-4c55-b7a1-b278d41f3a2a_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_8014f82b-429f-4bcf-a6e3-26c39e38ed02" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_AwardTypeAxis_08862624-9758-4c55-b7a1-b278d41f3a2a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_8014f82b-429f-4bcf-a6e3-26c39e38ed02" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_4fac624d-8e02-47ed-a58c-7834eb926783" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_8014f82b-429f-4bcf-a6e3-26c39e38ed02" xlink:to="loc_us-gaap_EmployeeStockOptionMember_4fac624d-8e02-47ed-a58c-7834eb926783" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockMember_5dbf485e-9a1d-4b62-8b37-7bd013ed8dcf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_8014f82b-429f-4bcf-a6e3-26c39e38ed02" xlink:to="loc_us-gaap_EmployeeStockMember_5dbf485e-9a1d-4b62-8b37-7bd013ed8dcf" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails" xlink:type="extended" id="ie6044af20c024eea89f2ab54751b61ad_StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized_ccc6af91-beb2-494f-8cff-bf79743f9375" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized_ccc6af91-beb2-494f-8cff-bf79743f9375" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_927d5003-dc8f-4395-b385-7efe502ea4ef" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_927d5003-dc8f-4395-b385-7efe502ea4ef" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth_3e78f6d6-5d19-46fd-97b9-ddc5fc08f89e" xlink:href="calx-20221231.xsd#calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:to="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth_3e78f6d6-5d19-46fd-97b9-ddc5fc08f89e" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo_25095cbf-f11a-461d-80c5-fb7379f5dbd5" xlink:href="calx-20221231.xsd#calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:to="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo_25095cbf-f11a-461d-80c5-fb7379f5dbd5" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree_ce4d36df-b9a7-4064-ad55-9757079a1674" xlink:href="calx-20221231.xsd#calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:to="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree_ce4d36df-b9a7-4064-ad55-9757079a1674" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour_d229a3a9-a235-43ee-a4ef-0a918175922e" xlink:href="calx-20221231.xsd#calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:to="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour_d229a3a9-a235-43ee-a4ef-0a918175922e" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2c6ccdc9-52ba-431d-9947-6a88edf95afb" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2c6ccdc9-52ba-431d-9947-6a88edf95afb" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_9aca22a0-8243-4d85-942b-406770496483" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AwardTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2c6ccdc9-52ba-431d-9947-6a88edf95afb" xlink:to="loc_us-gaap_AwardTypeAxis_9aca22a0-8243-4d85-942b-406770496483" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_9aca22a0-8243-4d85-942b-406770496483_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_AwardTypeAxis_9aca22a0-8243-4d85-942b-406770496483" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_9aca22a0-8243-4d85-942b-406770496483_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_3e9b0ec6-8bd9-4aa9-8498-d5ac99edba9f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_AwardTypeAxis_9aca22a0-8243-4d85-942b-406770496483" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_3e9b0ec6-8bd9-4aa9-8498-d5ac99edba9f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_5a2ab5a7-e0a6-4e11-a7a5-d700dc19acb7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_3e9b0ec6-8bd9-4aa9-8498-d5ac99edba9f" xlink:to="loc_us-gaap_EmployeeStockOptionMember_5a2ab5a7-e0a6-4e11-a7a5-d700dc19acb7" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockMember_ab26222b-dbfa-43f3-8aa9-504ee72e0da3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_3e9b0ec6-8bd9-4aa9-8498-d5ac99edba9f" xlink:to="loc_us-gaap_EmployeeStockMember_ab26222b-dbfa-43f3-8aa9-504ee72e0da3" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquitySharesReservedForFutureIssuanceDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails" xlink:type="extended" id="i785adf74073b4393a19ec84a66ddde74_StockholdersEquitySharesReservedForFutureIssuanceDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_88c22150-fa92-44e4-8b96-4d4e635d709d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_fca89cfb-861b-45c9-89a2-ffaf81d039db" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_88c22150-fa92-44e4-8b96-4d4e635d709d" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_fca89cfb-861b-45c9-89a2-ffaf81d039db" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_1ee270f2-ccd2-4025-ba93-95f7f993767b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_88c22150-fa92-44e4-8b96-4d4e635d709d" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_1ee270f2-ccd2-4025-ba93-95f7f993767b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance_d9d1ef82-3038-4ef2-83fd-c5ec351d8c42" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockCapitalSharesReservedForFutureIssuance"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_88c22150-fa92-44e4-8b96-4d4e635d709d" xlink:to="loc_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance_d9d1ef82-3038-4ef2-83fd-c5ec351d8c42" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_65cfca83-1e2b-4ab4-89d1-e3729b1779a7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_88c22150-fa92-44e4-8b96-4d4e635d709d" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_65cfca83-1e2b-4ab4-89d1-e3729b1779a7" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameAxis_28390eac-b61d-416a-be52-7eeb34a8ac91" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_65cfca83-1e2b-4ab4-89d1-e3729b1779a7" xlink:to="loc_us-gaap_PlanNameAxis_28390eac-b61d-416a-be52-7eeb34a8ac91" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameDomain_28390eac-b61d-416a-be52-7eeb34a8ac91_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_PlanNameAxis_28390eac-b61d-416a-be52-7eeb34a8ac91" xlink:to="loc_us-gaap_PlanNameDomain_28390eac-b61d-416a-be52-7eeb34a8ac91_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameDomain_ab9835e7-8be8-441e-8f0d-3cc2ed17cb2d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_PlanNameAxis_28390eac-b61d-416a-be52-7eeb34a8ac91" xlink:to="loc_us-gaap_PlanNameDomain_ab9835e7-8be8-441e-8f0d-3cc2ed17cb2d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2019PlanMember_cb4a30a1-9778-434e-942f-2f0797a806d6" xlink:href="calx-20221231.xsd#calx_A2019PlanMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PlanNameDomain_ab9835e7-8be8-441e-8f0d-3cc2ed17cb2d" xlink:to="loc_calx_A2019PlanMember_cb4a30a1-9778-434e-942f-2f0797a806d6" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember_3aca9807-f62e-4df9-8959-91afb2afdca4" xlink:href="calx-20221231.xsd#calx_A2017NonqualifiedEmployeeStockPurchasePlanMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PlanNameDomain_ab9835e7-8be8-441e-8f0d-3cc2ed17cb2d" xlink:to="loc_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember_3aca9807-f62e-4df9-8959-91afb2afdca4" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_5f1f63f8-7101-492e-be75-e8c4e57f2e1e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AwardTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_65cfca83-1e2b-4ab4-89d1-e3729b1779a7" xlink:to="loc_us-gaap_AwardTypeAxis_5f1f63f8-7101-492e-be75-e8c4e57f2e1e" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_5f1f63f8-7101-492e-be75-e8c4e57f2e1e_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_AwardTypeAxis_5f1f63f8-7101-492e-be75-e8c4e57f2e1e" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_5f1f63f8-7101-492e-be75-e8c4e57f2e1e_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_586cce2d-0d29-4395-abcf-3be523142c82" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_AwardTypeAxis_5f1f63f8-7101-492e-be75-e8c4e57f2e1e" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_586cce2d-0d29-4395-abcf-3be523142c82" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockMember_25c2eec6-ae7b-4593-ae1c-c925be84b7f6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_586cce2d-0d29-4395-abcf-3be523142c82" xlink:to="loc_us-gaap_EmployeeStockMember_25c2eec6-ae7b-4593-ae1c-c925be84b7f6" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#AccumulatedOtherComprehensiveLossDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails" xlink:type="extended" id="ibf9b1527caf84758be0b789cf2aa65d2_AccumulatedOtherComprehensiveLossDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_3e3dd8d0-6d10-473a-b122-b42887d6b42d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_1b8734ae-cd0d-4aed-918b-3434010729c3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInStockholdersEquityRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_3e3dd8d0-6d10-473a-b122-b42887d6b42d" xlink:to="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_1b8734ae-cd0d-4aed-918b-3434010729c3" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_14215e48-2cd0-4bab-b3fa-405f9dcb729c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockholdersEquity"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_1b8734ae-cd0d-4aed-918b-3434010729c3" xlink:to="loc_us-gaap_StockholdersEquity_14215e48-2cd0-4bab-b3fa-405f9dcb729c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_611c1092-6c09-4bf9-9f60-7ce2df86f9b0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_1b8734ae-cd0d-4aed-918b-3434010729c3" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_611c1092-6c09-4bf9-9f60-7ce2df86f9b0" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_3ccd1d8c-85f7-44d8-a31e-27c85df767e9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockholdersEquity"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_9ecb89bf-1c49-4abd-a644-3c2a8d579d3e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_3e3dd8d0-6d10-473a-b122-b42887d6b42d" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_9ecb89bf-1c49-4abd-a644-3c2a8d579d3e" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementEquityComponentsAxis_3c259938-7ccd-459b-adc0-934aba2c1d08" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementEquityComponentsAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_9ecb89bf-1c49-4abd-a644-3c2a8d579d3e" xlink:to="loc_us-gaap_StatementEquityComponentsAxis_3c259938-7ccd-459b-adc0-934aba2c1d08" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_3c259938-7ccd-459b-adc0-934aba2c1d08_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityComponentDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_3c259938-7ccd-459b-adc0-934aba2c1d08" xlink:to="loc_us-gaap_EquityComponentDomain_3c259938-7ccd-459b-adc0-934aba2c1d08_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_acb2e356-73c1-4863-b9b3-e97889e7f487" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityComponentDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_3c259938-7ccd-459b-adc0-934aba2c1d08" xlink:to="loc_us-gaap_EquityComponentDomain_acb2e356-73c1-4863-b9b3-e97889e7f487" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_f2fc7996-2e42-4d61-a643-fe51be38e53f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_acb2e356-73c1-4863-b9b3-e97889e7f487" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_f2fc7996-2e42-4d61-a643-fe51be38e53f" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember_023d64c2-fe08-4c62-b7aa-943b1d5faaa3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_f2fc7996-2e42-4d61-a643-fe51be38e53f" xlink:to="loc_us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember_023d64c2-fe08-4c62-b7aa-943b1d5faaa3" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedTranslationAdjustmentMember_3295b896-0ab4-4793-bec1-8afbcdf35f93" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedTranslationAdjustmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_f2fc7996-2e42-4d61-a643-fe51be38e53f" xlink:to="loc_us-gaap_AccumulatedTranslationAdjustmentMember_3295b896-0ab4-4793-bec1-8afbcdf35f93" xlink:type="arc" order="2"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/IncomeTaxesTextualDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#IncomeTaxesTextualDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/IncomeTaxesTextualDetails" xlink:type="extended" id="if4c5dffd4b2e44a2b47fb72fb50979c8_IncomeTaxesTextualDetails">
    <link:loc xlink:type="locator" xlink:label="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:href="calx-20221231.xsd#calx_IncomeTaxesLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount_63b32cee-31b8-48da-9cc5-84a5729be205" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:to="loc_us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount_63b32cee-31b8-48da-9cc5-84a5729be205" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance_eb776b21-0209-4c81-b21d-579db9b5b7a4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsValuationAllowance"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:to="loc_us-gaap_DeferredTaxAssetsValuationAllowance_eb776b21-0209-4c81-b21d-579db9b5b7a4" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLossCarryforwards_c460a0d7-f3d1-4825-9c6f-a72156e51e40" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLossCarryforwards"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:to="loc_us-gaap_OperatingLossCarryforwards_c460a0d7-f3d1-4825-9c6f-a72156e51e40" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardAmount_e3f74dcf-a51c-4d2a-9ad0-a84e16fd35ec" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TaxCreditCarryforwardAmount"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:to="loc_us-gaap_TaxCreditCarryforwardAmount_e3f74dcf-a51c-4d2a-9ad0-a84e16fd35ec" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefits_9edd8273-45ba-4c41-bf5e-8982197d67f8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefits"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:to="loc_us-gaap_UnrecognizedTaxBenefits_9edd8273-45ba-4c41-bf5e-8982197d67f8" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate_bd5ee275-0d70-435a-a888-8e5d3cb6b81f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate_bd5ee275-0d70-435a-a888-8e5d3cb6b81f" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_e3c598ae-87dd-448e-8968-01e52dad6eab" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_e3c598ae-87dd-448e-8968-01e52dad6eab" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_IncomeTaxesTable_56d08dab-70f2-4965-a5c9-f387c597f2e4" xlink:href="calx-20221231.xsd#calx_IncomeTaxesTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:to="loc_calx_IncomeTaxesTable_56d08dab-70f2-4965-a5c9-f387c597f2e4" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityAxis_63aca7c2-a07a-4e4c-9e9e-e9de2222770b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxAuthorityAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_calx_IncomeTaxesTable_56d08dab-70f2-4965-a5c9-f387c597f2e4" xlink:to="loc_us-gaap_IncomeTaxAuthorityAxis_63aca7c2-a07a-4e4c-9e9e-e9de2222770b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityDomain_63aca7c2-a07a-4e4c-9e9e-e9de2222770b_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxAuthorityDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IncomeTaxAuthorityAxis_63aca7c2-a07a-4e4c-9e9e-e9de2222770b" xlink:to="loc_us-gaap_IncomeTaxAuthorityDomain_63aca7c2-a07a-4e4c-9e9e-e9de2222770b_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityDomain_a6c995af-a2e5-449e-bc24-1be471cc2745" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxAuthorityDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IncomeTaxAuthorityAxis_63aca7c2-a07a-4e4c-9e9e-e9de2222770b" xlink:to="loc_us-gaap_IncomeTaxAuthorityDomain_a6c995af-a2e5-449e-bc24-1be471cc2745" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DomesticCountryMember_c08b8459-74db-4fba-a48a-aad8585bdb6f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DomesticCountryMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain_a6c995af-a2e5-449e-bc24-1be471cc2745" xlink:to="loc_us-gaap_DomesticCountryMember_c08b8459-74db-4fba-a48a-aad8585bdb6f" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StateAndLocalJurisdictionMember_82cc1767-6131-4ee2-ba65-50d9f56dfd04" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StateAndLocalJurisdictionMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain_a6c995af-a2e5-449e-bc24-1be471cc2745" xlink:to="loc_us-gaap_StateAndLocalJurisdictionMember_82cc1767-6131-4ee2-ba65-50d9f56dfd04" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CaliforniaStateMember_c1fe1cb5-4ac0-4357-a289-18373795b60e" xlink:href="calx-20221231.xsd#calx_CaliforniaStateMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain_a6c995af-a2e5-449e-bc24-1be471cc2745" xlink:to="loc_calx_CaliforniaStateMember_c1fe1cb5-4ac0-4357-a289-18373795b60e" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_OtherStateMember_d5a9c1bf-c9ca-4b30-8519-3741f877c203" xlink:href="calx-20221231.xsd#calx_OtherStateMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain_a6c995af-a2e5-449e-bc24-1be471cc2745" xlink:to="loc_calx_OtherStateMember_d5a9c1bf-c9ca-4b30-8519-3741f877c203" xlink:type="arc" order="3"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails" xlink:type="extended" id="i590ecf9596e04ce096921bf5c4219031_RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_ab57f09f-c596-488f-b9b3-4f97de2ddc0d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_28767dcf-78c9-4c70-8e6b-22d6d956b8fb" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_ab57f09f-c596-488f-b9b3-4f97de2ddc0d" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_28767dcf-78c9-4c70-8e6b-22d6d956b8fb" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_1bd658e2-b251-441b-b577-36028f68f4b7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_ab57f09f-c596-488f-b9b3-4f97de2ddc0d" xlink:to="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_1bd658e2-b251-441b-b577-36028f68f4b7" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_dfb71a81-afdf-46c0-8071-c492fd4a9421" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_StatementGeographicalAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_1bd658e2-b251-441b-b577-36028f68f4b7" xlink:to="loc_srt_StatementGeographicalAxis_dfb71a81-afdf-46c0-8071-c492fd4a9421" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_dfb71a81-afdf-46c0-8071-c492fd4a9421_default" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_StatementGeographicalAxis_dfb71a81-afdf-46c0-8071-c492fd4a9421" xlink:to="loc_srt_SegmentGeographicalDomain_dfb71a81-afdf-46c0-8071-c492fd4a9421_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_b9e9d92e-2b03-41d0-a3c0-36a4e4e7b947" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_StatementGeographicalAxis_dfb71a81-afdf-46c0-8071-c492fd4a9421" xlink:to="loc_srt_SegmentGeographicalDomain_b9e9d92e-2b03-41d0-a3c0-36a4e4e7b947" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_country_US_f3e88d35-995b-4bcd-a6eb-805adb016e80" xlink:href="https://xbrl.sec.gov/country/2022/country-2022.xsd#country_US"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_b9e9d92e-2b03-41d0-a3c0-36a4e4e7b947" xlink:to="loc_country_US_f3e88d35-995b-4bcd-a6eb-805adb016e80" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_EuropeMember_d9ea8b21-fb81-4e79-aae3-119c88872cee" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_EuropeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_b9e9d92e-2b03-41d0-a3c0-36a4e4e7b947" xlink:to="loc_srt_EuropeMember_d9ea8b21-fb81-4e79-aae3-119c88872cee" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AmericasExUSMember_c557d7c0-efe0-4edf-a8b9-7b2d1d1ba7bd" xlink:href="calx-20221231.xsd#calx_AmericasExUSMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_b9e9d92e-2b03-41d0-a3c0-36a4e4e7b947" xlink:to="loc_calx_AmericasExUSMember_c557d7c0-efe0-4edf-a8b9-7b2d1d1ba7bd" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_MiddleEastAndAfricaMember_dad55d25-e722-45b6-af5e-06efb2ec9be0" xlink:href="calx-20221231.xsd#calx_MiddleEastAndAfricaMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_b9e9d92e-2b03-41d0-a3c0-36a4e4e7b947" xlink:to="loc_calx_MiddleEastAndAfricaMember_dad55d25-e722-45b6-af5e-06efb2ec9be0" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_AsiaPacificMember_a34394ee-7f6b-4c4c-bfc1-91f9d9b82deb" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_AsiaPacificMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_b9e9d92e-2b03-41d0-a3c0-36a4e4e7b947" xlink:to="loc_srt_AsiaPacificMember_a34394ee-7f6b-4c4c-bfc1-91f9d9b82deb" xlink:type="arc" order="4"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails" xlink:type="extended" id="ic144524b10a8479e9debf1705de02d41_RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_63425276-f6c8-46a8-8035-e63b9981a10d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_76ba99d1-b313-4359-a111-7d595429dbdf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_63425276-f6c8-46a8-8035-e63b9981a10d" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentNet_76ba99d1-b313-4359-a111-7d595429dbdf" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_bed4298c-19b0-4853-9445-499e1bef256a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_63425276-f6c8-46a8-8035-e63b9981a10d" xlink:to="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_bed4298c-19b0-4853-9445-499e1bef256a" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_b021677a-8a99-4c18-a8a7-47e8e4aba36c" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_StatementGeographicalAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_bed4298c-19b0-4853-9445-499e1bef256a" xlink:to="loc_srt_StatementGeographicalAxis_b021677a-8a99-4c18-a8a7-47e8e4aba36c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_b021677a-8a99-4c18-a8a7-47e8e4aba36c_default" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_StatementGeographicalAxis_b021677a-8a99-4c18-a8a7-47e8e4aba36c" xlink:to="loc_srt_SegmentGeographicalDomain_b021677a-8a99-4c18-a8a7-47e8e4aba36c_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_3568af99-8ccd-4d1f-9669-e0836ad7fc80" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_StatementGeographicalAxis_b021677a-8a99-4c18-a8a7-47e8e4aba36c" xlink:to="loc_srt_SegmentGeographicalDomain_3568af99-8ccd-4d1f-9669-e0836ad7fc80" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_country_US_aa60f9ad-c86f-44d9-9561-667958b4280a" xlink:href="https://xbrl.sec.gov/country/2022/country-2022.xsd#country_US"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_3568af99-8ccd-4d1f-9669-e0836ad7fc80" xlink:to="loc_country_US_aa60f9ad-c86f-44d9-9561-667958b4280a" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_country_CN_f3f15190-9ea8-4b1f-999c-e0e10b565d5c" xlink:href="https://xbrl.sec.gov/country/2022/country-2022.xsd#country_CN"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_3568af99-8ccd-4d1f-9669-e0836ad7fc80" xlink:to="loc_country_CN_f3f15190-9ea8-4b1f-999c-e0e10b565d5c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_country_IN_86b934ab-917b-4940-a645-e0a9a38412c6" xlink:href="https://xbrl.sec.gov/country/2022/country-2022.xsd#country_IN"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_3568af99-8ccd-4d1f-9669-e0836ad7fc80" xlink:to="loc_country_IN_86b934ab-917b-4940-a645-e0a9a38412c6" xlink:type="arc" order="2"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#RevenuefromContractswithCustomersPerformanceObligationDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails" xlink:type="extended" id="icdd3388577f1418caf250650d8411c43_RevenuefromContractswithCustomersPerformanceObligationDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems_1098f399-8948-4b12-949c-22e1e235c76d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationPercentage_fe54ef58-8934-4bbf-b375-6311cba0d889" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationPercentage"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems_1098f399-8948-4b12-949c-22e1e235c76d" xlink:to="loc_us-gaap_RevenueRemainingPerformanceObligationPercentage_fe54ef58-8934-4bbf-b375-6311cba0d889" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1_be07473f-f84b-490c-adcb-ee0795220a56" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems_1098f399-8948-4b12-949c-22e1e235c76d" xlink:to="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1_be07473f-f84b-490c-adcb-ee0795220a56" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable_9648c4eb-6524-45ce-a9e4-aabab3687f1a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems_1098f399-8948-4b12-949c-22e1e235c76d" xlink:to="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable_9648c4eb-6524-45ce-a9e4-aabab3687f1a" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis_041e0232-cc67-49d3-aa79-172d07f418cd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable_9648c4eb-6524-45ce-a9e4-aabab3687f1a" xlink:to="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis_041e0232-cc67-49d3-aa79-172d07f418cd" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails_1" xlink:type="simple" xlink:href="calx-20221231.xsd#RevenuefromContractswithCustomersPerformanceObligationDetails_1"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails_1" xlink:type="extended" id="i04dbf7e644e343fcbbf64cb4a658f31c_RevenuefromContractswithCustomersPerformanceObligationDetails_1">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems_1098f399-8948-4b12-949c-22e1e235c76d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationPercentage_fe54ef58-8934-4bbf-b375-6311cba0d889" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationPercentage"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems_1098f399-8948-4b12-949c-22e1e235c76d" xlink:to="loc_us-gaap_RevenueRemainingPerformanceObligationPercentage_fe54ef58-8934-4bbf-b375-6311cba0d889" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1_be07473f-f84b-490c-adcb-ee0795220a56" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems_1098f399-8948-4b12-949c-22e1e235c76d" xlink:to="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1_be07473f-f84b-490c-adcb-ee0795220a56" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable_9648c4eb-6524-45ce-a9e4-aabab3687f1a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems_1098f399-8948-4b12-949c-22e1e235c76d" xlink:to="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable_9648c4eb-6524-45ce-a9e4-aabab3687f1a" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#RevenuefromContractswithCustomersConcentrationRiskDetails"/>
  <link:definitionLink xlink:role="http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails" xlink:type="extended" id="i74c72bea841845ba97091e7de64c95f9_RevenuefromContractswithCustomersConcentrationRiskDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskLineItems_7f3938ed-46a9-4d6f-a944-64d5b3fd627d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskPercentage1_07f5dd68-87ad-4858-b471-f46145a08c7f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskPercentage1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ConcentrationRiskLineItems_7f3938ed-46a9-4d6f-a944-64d5b3fd627d" xlink:to="loc_us-gaap_ConcentrationRiskPercentage1_07f5dd68-87ad-4858-b471-f46145a08c7f" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTable_3ea3c5e4-12ee-43fa-8336-a06366d743fd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ConcentrationRiskLineItems_7f3938ed-46a9-4d6f-a944-64d5b3fd627d" xlink:to="loc_us-gaap_ConcentrationRiskTable_3ea3c5e4-12ee-43fa-8336-a06366d743fd" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MajorCustomersAxis_b1eb8b3a-66f6-49b9-b0db-c04aa62e06b6" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_MajorCustomersAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ConcentrationRiskTable_3ea3c5e4-12ee-43fa-8336-a06366d743fd" xlink:to="loc_srt_MajorCustomersAxis_b1eb8b3a-66f6-49b9-b0db-c04aa62e06b6" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_NameOfMajorCustomerDomain_b1eb8b3a-66f6-49b9-b0db-c04aa62e06b6_default" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_NameOfMajorCustomerDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_MajorCustomersAxis_b1eb8b3a-66f6-49b9-b0db-c04aa62e06b6" xlink:to="loc_srt_NameOfMajorCustomerDomain_b1eb8b3a-66f6-49b9-b0db-c04aa62e06b6_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_NameOfMajorCustomerDomain_8e51a0fb-4847-4dda-ad3f-f09be5d8d895" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_NameOfMajorCustomerDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_MajorCustomersAxis_b1eb8b3a-66f6-49b9-b0db-c04aa62e06b6" xlink:to="loc_srt_NameOfMajorCustomerDomain_8e51a0fb-4847-4dda-ad3f-f09be5d8d895" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_LumenTechnologiesIncMember_202c5d02-bd51-4c1e-903d-7a6f47e66eff" xlink:href="calx-20221231.xsd#calx_LumenTechnologiesIncMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_NameOfMajorCustomerDomain_8e51a0fb-4847-4dda-ad3f-f09be5d8d895" xlink:to="loc_calx_LumenTechnologiesIncMember_202c5d02-bd51-4c1e-903d-7a6f47e66eff" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_OneCustomerMember_b189e2cf-8077-4d69-b3a0-090a5878bfdd" xlink:href="calx-20221231.xsd#calx_OneCustomerMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_NameOfMajorCustomerDomain_8e51a0fb-4847-4dda-ad3f-f09be5d8d895" xlink:to="loc_calx_OneCustomerMember_b189e2cf-8077-4d69-b3a0-090a5878bfdd" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CustomerTwoMember_1c8383e7-6445-496e-8601-93c1ff7773b2" xlink:href="calx-20221231.xsd#calx_CustomerTwoMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_NameOfMajorCustomerDomain_8e51a0fb-4847-4dda-ad3f-f09be5d8d895" xlink:to="loc_calx_CustomerTwoMember_1c8383e7-6445-496e-8601-93c1ff7773b2" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByTypeAxis_fb87f3d8-7506-4021-ad64-0907c5bcd0c0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskByTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ConcentrationRiskTable_3ea3c5e4-12ee-43fa-8336-a06366d743fd" xlink:to="loc_us-gaap_ConcentrationRiskByTypeAxis_fb87f3d8-7506-4021-ad64-0907c5bcd0c0" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTypeDomain_fb87f3d8-7506-4021-ad64-0907c5bcd0c0_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_ConcentrationRiskByTypeAxis_fb87f3d8-7506-4021-ad64-0907c5bcd0c0" xlink:to="loc_us-gaap_ConcentrationRiskTypeDomain_fb87f3d8-7506-4021-ad64-0907c5bcd0c0_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTypeDomain_5ce577f2-59b6-4eb1-b1e9-92725775461d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_ConcentrationRiskByTypeAxis_fb87f3d8-7506-4021-ad64-0907c5bcd0c0" xlink:to="loc_us-gaap_ConcentrationRiskTypeDomain_5ce577f2-59b6-4eb1-b1e9-92725775461d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CustomerConcentrationRiskMember_d38567ed-384c-4c1d-89d5-2da40b968617" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CustomerConcentrationRiskMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ConcentrationRiskTypeDomain_5ce577f2-59b6-4eb1-b1e9-92725775461d" xlink:to="loc_us-gaap_CustomerConcentrationRiskMember_d38567ed-384c-4c1d-89d5-2da40b968617" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_7fa3f0f8-2d0b-4b0b-b9ae-90b0c3a49fb3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ConcentrationRiskTable_3ea3c5e4-12ee-43fa-8336-a06366d743fd" xlink:to="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_7fa3f0f8-2d0b-4b0b-b9ae-90b0c3a49fb3" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskBenchmarkDomain_7fa3f0f8-2d0b-4b0b-b9ae-90b0c3a49fb3_default" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskBenchmarkDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_7fa3f0f8-2d0b-4b0b-b9ae-90b0c3a49fb3" xlink:to="loc_us-gaap_ConcentrationRiskBenchmarkDomain_7fa3f0f8-2d0b-4b0b-b9ae-90b0c3a49fb3_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskBenchmarkDomain_c64e56b3-fded-479d-a5a1-4dc5a2a55450" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskBenchmarkDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_7fa3f0f8-2d0b-4b0b-b9ae-90b0c3a49fb3" xlink:to="loc_us-gaap_ConcentrationRiskBenchmarkDomain_c64e56b3-fded-479d-a5a1-4dc5a2a55450" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerMember_584df4b0-3044-4cce-b0d1-5225fa0a619c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ConcentrationRiskBenchmarkDomain_c64e56b3-fded-479d-a5a1-4dc5a2a55450" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerMember_584df4b0-3044-4cce-b0d1-5225fa0a619c" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableMember_37c78c90-058d-48fe-a639-6be9672d9a30" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsReceivableMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ConcentrationRiskBenchmarkDomain_c64e56b3-fded-479d-a5a1-4dc5a2a55450" xlink:to="loc_us-gaap_AccountsReceivableMember_37c78c90-058d-48fe-a639-6be9672d9a30" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://fasb.org/us-gaap/role/eedm/ExtensibleEnumerationLists" xlink:type="simple" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-roles-2022.xsd#eedm"/>
  <link:definitionLink xlink:role="http://fasb.org/us-gaap/role/eedm/ExtensibleEnumerationLists" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrentAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LiabilitiesCurrentAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccruedLiabilitiesCurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LiabilitiesCurrentAbstract" xlink:to="loc_us-gaap_AccruedLiabilitiesCurrent" xlink:type="arc" order="1"/>
  </link:definitionLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.LAB
<SEQUENCE>10
<FILENAME>calx-20221231_lab.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION LABEL LINKBASE DOCUMENT
<TEXT>
<XBRL>
<?xml version="1.0" encoding="UTF-8"?>

<!--XBRL Document Created with Wdesk from Workiva-->
<!--Copyright 2023 Workiva-->
<!--r:65ceb81b-1301-4d03-a3b5-a19a3f419a3b,g:9d9ffaaa-0d49-4a33-8fc4-ed994a16f30c-->
<link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedPeriodStartLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodStartLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/netLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/net-2009-12-16.xsd#netLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedNetLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedNetLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTerseLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedPeriodEndLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodEndLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedTotalLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTotalLabel"/>
  <link:labelLink xlink:role="http://www.xbrl.org/2003/role/link" xlink:type="extended">
    <link:label id="lab_calx_AccruedRevenueSharePaymentsCurrent_de1a8919-0e77-48f2-a620-49ce2c8530fe_terseLabel_en-US" xlink:label="lab_calx_AccruedRevenueSharePaymentsCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current portion of revenue-share payments</link:label>
    <link:label id="lab_calx_AccruedRevenueSharePaymentsCurrent_label_en-US" xlink:label="lab_calx_AccruedRevenueSharePaymentsCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Revenue Share Payments, Current</link:label>
    <link:label id="lab_calx_AccruedRevenueSharePaymentsCurrent_documentation_en-US" xlink:label="lab_calx_AccruedRevenueSharePaymentsCurrent" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Revenue Share Payments, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedRevenueSharePaymentsCurrent" xlink:href="calx-20221231.xsd#calx_AccruedRevenueSharePaymentsCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_AccruedRevenueSharePaymentsCurrent" xlink:to="lab_calx_AccruedRevenueSharePaymentsCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_fb882d11-3ab7-4271-ab2a-dc66774f3801_terseLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Stockholders' Equity [Roll Forward]</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Stockholders' Equity [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInStockholdersEquityRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward" xlink:to="lab_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CurrentForeignTaxExpenseBenefit_be3acc6d-45f1-48ac-bb0e-1133b1aa68d8_terseLabel_en-US" xlink:label="lab_us-gaap_CurrentForeignTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign</link:label>
    <link:label id="lab_us-gaap_CurrentForeignTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_CurrentForeignTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current Foreign Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentForeignTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CurrentForeignTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CurrentForeignTaxExpenseBenefit" xlink:to="lab_us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_1f893697-528c-417c-af0b-34350fa1a5a0_totalLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total future minimum lease payments</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_032b8109-8a8f-469e-a655-51486fefe291_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total future minimum lease payments</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, to be Paid</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfCashAndCashEquivalentsTableTextBlock_27c56ca3-b939-431d-a015-74c999174603_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfCashAndCashEquivalentsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Summary of Cash and Cash Equivalents</link:label>
    <link:label id="lab_us-gaap_ScheduleOfCashAndCashEquivalentsTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfCashAndCashEquivalentsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Cash and Cash Equivalents [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfCashAndCashEquivalentsTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfCashAndCashEquivalentsTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities_3c87b02b-7494-44ed-9983-97028fd465e0_verboseLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other long-term liabilities</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Other Noncurrent Liabilities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities" xlink:to="lab_us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredIncomeTaxAssetsNet_250bdc33-54d8-40b8-b461-0604ac74eeaa_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxAssetsNet" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred tax assets</link:label>
    <link:label id="lab_us-gaap_DeferredIncomeTaxAssetsNet_label_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxAssetsNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Income Tax Assets, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxAssetsNet" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxAssetsNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredIncomeTaxAssetsNet" xlink:to="lab_us-gaap_DeferredIncomeTaxAssetsNet" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityAddressPostalZipCode_a743e4e4-a074-4d5b-bed2-413ae580b5fe_terseLabel_en-US" xlink:label="lab_dei_EntityAddressPostalZipCode" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, Postal Zip Code</link:label>
    <link:label id="lab_dei_EntityAddressPostalZipCode_label_en-US" xlink:label="lab_dei_EntityAddressPostalZipCode" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, Postal Zip Code</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressPostalZipCode" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityAddressPostalZipCode"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityAddressPostalZipCode" xlink:to="lab_dei_EntityAddressPostalZipCode" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_1dd6a603-7684-498f-bca9-88c3605233ee_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred:</link:label>
    <link:label id="lab_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_label_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Income Tax Expense (Benefit), Continuing Operations [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="lab_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PreferredStockSharesOutstanding_c20615eb-3cb1-41ee-b9d2-ef4d24743d5b_verboseLabel_en-US" xlink:label="lab_us-gaap_PreferredStockSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred stock, shares outstanding (in shares)</link:label>
    <link:label id="lab_us-gaap_PreferredStockSharesOutstanding_label_en-US" xlink:label="lab_us-gaap_PreferredStockSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred Stock, Shares Outstanding</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesOutstanding" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockSharesOutstanding"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PreferredStockSharesOutstanding" xlink:to="lab_us-gaap_PreferredStockSharesOutstanding" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_12e95b92-58ab-4b5b-ac6e-1d6134314433_terseLabel_en-US" xlink:label="lab_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits [Roll Forward]</link:label>
    <link:label id="lab_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_label_en-US" xlink:label="lab_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Reconciliation of Unrecognized Tax Benefits, Excluding Amounts Pertaining to Examined Tax Returns [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward" xlink:to="lab_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentGross_53d71a32-ece8-47ac-8434-f649e8c71f62_verboseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentGross" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property and equipment, gross</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentGross_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentGross" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentGross" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentGross"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentGross" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentGross" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxDisclosureAbstract_fc67fa37-0bcf-4a22-9046-28946e2cbb89_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Disclosure [Abstract]</link:label>
    <link:label id="lab_us-gaap_IncomeTaxDisclosureAbstract_label_en-US" xlink:label="lab_us-gaap_IncomeTaxDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Disclosure [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract" xlink:to="lab_us-gaap_IncomeTaxDisclosureAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment_979f45e4-48ff-4125-bc3e-4560f8c06a14_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fixed assets</link:label>
    <link:label id="lab_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment_label_en-US" xlink:label="lab_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Liabilities, Property, Plant and Equipment</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:to="lab_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringReserve_38046077-05bb-45c0-a9d5-84f0eb1e3a6b_verboseLabel_en-US" xlink:label="lab_us-gaap_RestructuringReserve" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring reserve</link:label>
    <link:label id="lab_us-gaap_RestructuringReserve_label_en-US" xlink:label="lab_us-gaap_RestructuringReserve" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Reserve</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserve" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringReserve"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringReserve" xlink:to="lab_us-gaap_RestructuringReserve" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InventoryNetAbstract_0204d61e-40cf-48b2-a140-e851174ea9d5_verboseLabel_en-US" xlink:label="lab_us-gaap_InventoryNetAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Summary of inventory, net</link:label>
    <link:label id="lab_us-gaap_InventoryNetAbstract_label_en-US" xlink:label="lab_us-gaap_InventoryNetAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory, Net [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryNetAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InventoryNetAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InventoryNetAbstract" xlink:to="lab_us-gaap_InventoryNetAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesDeductions_3670ec3a-0694-452e-a7a7-217b572f42f8_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesDeductions" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Write Offs and Returns</link:label>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesDeductions_label_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesDeductions" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves, Deduction</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDeductions" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesDeductions"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDeductions" xlink:to="lab_us-gaap_ValuationAllowancesAndReservesDeductions" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueOfFinancialInstrumentsPolicy_ddb4a578-bbc7-4a20-8266-ca790abf6bb6_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueOfFinancialInstrumentsPolicy" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value of Financial Instruments</link:label>
    <link:label id="lab_us-gaap_FairValueOfFinancialInstrumentsPolicy_label_en-US" xlink:label="lab_us-gaap_FairValueOfFinancialInstrumentsPolicy" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value of Financial Instruments, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueOfFinancialInstrumentsPolicy" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueOfFinancialInstrumentsPolicy"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueOfFinancialInstrumentsPolicy" xlink:to="lab_us-gaap_FairValueOfFinancialInstrumentsPolicy" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent_db790055-15a8-49b4-9b29-07c75a8f728c_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Base erosion anti-abuse tax</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, BEAT, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_f80eb82a-c68a-47f0-b30d-a1de1bc74611_terseLabel_en-US" xlink:label="lab_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Financial Instruments [Domain]</link:label>
    <link:label id="lab_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_label_en-US" xlink:label="lab_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Financial Instruments [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:to="lab_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods_6e747ea7-7759-4667-9c11-895a1833bb5b_terseLabel_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Number of offering periods</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods_label_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Number Of Offering Periods</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods_documentation_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Number Of Offering Periods</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods" xlink:to="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_PerformanceTargetsServicesConditionPeriod_e3a3709e-a213-4f00-992e-bd0c459ef939_terseLabel_en-US" xlink:label="lab_calx_PerformanceTargetsServicesConditionPeriod" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Performance targets services condition period</link:label>
    <link:label id="lab_calx_PerformanceTargetsServicesConditionPeriod_label_en-US" xlink:label="lab_calx_PerformanceTargetsServicesConditionPeriod" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Performance Targets Services Condition Period</link:label>
    <link:label id="lab_calx_PerformanceTargetsServicesConditionPeriod_documentation_en-US" xlink:label="lab_calx_PerformanceTargetsServicesConditionPeriod" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Performance Targets Services Condition Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PerformanceTargetsServicesConditionPeriod" xlink:href="calx-20221231.xsd#calx_PerformanceTargetsServicesConditionPeriod"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_PerformanceTargetsServicesConditionPeriod" xlink:to="lab_calx_PerformanceTargetsServicesConditionPeriod" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_RangeMember_b67c08b3-d058-4a9c-a6fa-1c517606ac17_terseLabel_en-US" xlink:label="lab_srt_RangeMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statistical Measurement [Domain]</link:label>
    <link:label id="lab_srt_RangeMember_label_en-US" xlink:label="lab_srt_RangeMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statistical Measurement [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_RangeMember" xlink:to="lab_srt_RangeMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_Depreciation_3b1590fc-8ec8-4e8b-b42e-3f02bf95406e_verboseLabel_en-US" xlink:label="lab_us-gaap_Depreciation" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Depreciation and amortization</link:label>
    <link:label id="lab_us-gaap_Depreciation_label_en-US" xlink:label="lab_us-gaap_Depreciation" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Depreciation</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Depreciation" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Depreciation"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_Depreciation" xlink:to="lab_us-gaap_Depreciation" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_7e85db0b-e1c5-4d8c-a1ae-cbf8b2ca6ff4_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options exercised (in shares)</link:label>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_label_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:to="lab_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsLiabilitiesNet_60587110-3911-4d6c-87f9-a10bff5e4fbc_totalLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsLiabilitiesNet" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred tax assets</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsLiabilitiesNet_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsLiabilitiesNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsLiabilitiesNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet" xlink:to="lab_us-gaap_DeferredTaxAssetsLiabilitiesNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_c1de9ec8-f779-420d-ab5c-91067a12db04_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating lease, weighted average discount rate, percent</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Weighted Average Discount Rate, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:to="lab_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember_f2877c1a-3244-4c6e-b264-bdc5e06ee4f3_terseLabel_en-US" xlink:label="lab_calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">All Platform Future And Work-From-Anywhere Culture Alignment</link:label>
    <link:label id="lab_calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember_label_en-US" xlink:label="lab_calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">All Platform Future And Work-From-Anywhere Culture Alignment [Member]</link:label>
    <link:label id="lab_calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember_documentation_en-US" xlink:label="lab_calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">All Platform Future And Work-From-Anywhere Culture Alignment</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember" xlink:href="calx-20221231.xsd#calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember" xlink:to="lab_calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AdditionalPaidInCapitalCommonStock_dd1d7f8e-37e4-47e6-9582-5b85e61a7c95_verboseLabel_en-US" xlink:label="lab_us-gaap_AdditionalPaidInCapitalCommonStock" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Additional paid-in capital</link:label>
    <link:label id="lab_us-gaap_AdditionalPaidInCapitalCommonStock_label_en-US" xlink:label="lab_us-gaap_AdditionalPaidInCapitalCommonStock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Additional Paid in Capital, Common Stock</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalCommonStock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AdditionalPaidInCapitalCommonStock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AdditionalPaidInCapitalCommonStock" xlink:to="lab_us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DomesticCountryMember_57715ffe-c9a6-4d52-a081-f8d6dff7b585_terseLabel_en-US" xlink:label="lab_us-gaap_DomesticCountryMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">U.S. Federal</link:label>
    <link:label id="lab_us-gaap_DomesticCountryMember_label_en-US" xlink:label="lab_us-gaap_DomesticCountryMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Domestic Tax Authority [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DomesticCountryMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DomesticCountryMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DomesticCountryMember" xlink:to="lab_us-gaap_DomesticCountryMember" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_CustomerTwoMember_a6c99035-68d9-4016-a586-3d90bf9f3a53_terseLabel_en-US" xlink:label="lab_calx_CustomerTwoMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer Two</link:label>
    <link:label id="lab_calx_CustomerTwoMember_label_en-US" xlink:label="lab_calx_CustomerTwoMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer Two [Member]</link:label>
    <link:label id="lab_calx_CustomerTwoMember_documentation_en-US" xlink:label="lab_calx_CustomerTwoMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer Two</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CustomerTwoMember" xlink:href="calx-20221231.xsd#calx_CustomerTwoMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_CustomerTwoMember" xlink:to="lab_calx_CustomerTwoMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_fb2a1bcc-7b02-48dd-9b88-822ffe789ac7_terseLabel_en-US" xlink:label="lab_us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">State</link:label>
    <link:label id="lab_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current State and Local Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:to="lab_us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember_37489bf7-e685-4443-a01d-2384c5995812_terseLabel_en-US" xlink:label="lab_calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Short-Term Marketable Securities And Cash Equivalents</link:label>
    <link:label id="lab_calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember_label_en-US" xlink:label="lab_calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Short-Term Marketable Securities And Cash Equivalents [Member]</link:label>
    <link:label id="lab_calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember_documentation_en-US" xlink:label="lab_calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Short-Term Marketable Securities And Cash Equivalents</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember" xlink:href="calx-20221231.xsd#calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember" xlink:to="lab_calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable_acc916dd-2fac-4ae4-af32-b05ea5d5b571_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Table]</link:label>
    <link:label id="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable_label_en-US" xlink:label="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable" xlink:to="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetIncomeLoss_8903f4d5-b64f-41a4-ad96-e6400de454b6_totalLabel_en-US" xlink:label="lab_us-gaap_NetIncomeLoss" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net income</link:label>
    <link:label id="lab_us-gaap_NetIncomeLoss_19f634e6-88e2-4e1e-b231-839bc4fdab69_terseLabel_en-US" xlink:label="lab_us-gaap_NetIncomeLoss" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net income</link:label>
    <link:label id="lab_us-gaap_NetIncomeLoss_label_en-US" xlink:label="lab_us-gaap_NetIncomeLoss" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Income (Loss) Attributable to Parent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetIncomeLoss"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NetIncomeLoss" xlink:to="lab_us-gaap_NetIncomeLoss" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock_f3ec8b70-029a-44ef-816f-a62963fd16d5_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Valuation Assumptions, ESPP</link:label>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Share-Based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_a204e192-335b-4211-8d25-1ec260c4a5ae_terseLabel_en-US" xlink:label="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Potentially dilutive shares, weighted-average (in shares)</link:label>
    <link:label id="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_label_en-US" xlink:label="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:to="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock_e2200d54-341e-48df-a957-1ffd62482f18_terseLabel_en-US" xlink:label="lab_calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Changes in Allowance for Doubtful Accounts and Product Reserve</link:label>
    <link:label id="lab_calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock_label_en-US" xlink:label="lab_calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule Of Changes In Allowance For Doubtful Accounts And Product Return Liability [Table Text Block]</link:label>
    <link:label id="lab_calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock_documentation_en-US" xlink:label="lab_calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule Of Changes In Allowance For Doubtful Accounts And Product Return Liability</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock" xlink:href="calx-20221231.xsd#calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock" xlink:to="lab_calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SubsequentEventTypeAxis_5733d3a2-3e0d-4ae6-8cbd-9664b9bc8a41_terseLabel_en-US" xlink:label="lab_us-gaap_SubsequentEventTypeAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event Type [Axis]</link:label>
    <link:label id="lab_us-gaap_SubsequentEventTypeAxis_label_en-US" xlink:label="lab_us-gaap_SubsequentEventTypeAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event Type [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubsequentEventTypeAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SubsequentEventTypeAxis" xlink:to="lab_us-gaap_SubsequentEventTypeAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_SanJoseCaliforniaMember_295cdd67-7d1a-42a2-8c3b-1160a26149cc_terseLabel_en-US" xlink:label="lab_calx_SanJoseCaliforniaMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">San Jose, California</link:label>
    <link:label id="lab_calx_SanJoseCaliforniaMember_label_en-US" xlink:label="lab_calx_SanJoseCaliforniaMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">San Jose, California [Member]</link:label>
    <link:label id="lab_calx_SanJoseCaliforniaMember_documentation_en-US" xlink:label="lab_calx_SanJoseCaliforniaMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">San Jose, California</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SanJoseCaliforniaMember" xlink:href="calx-20221231.xsd#calx_SanJoseCaliforniaMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_SanJoseCaliforniaMember" xlink:to="lab_calx_SanJoseCaliforniaMember" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture_082adefe-a3be-4b55-9888-fc8f00ea6b72_terseLabel_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee termination period following purchase date to receive shares subject to risk of forfeiture</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture_label_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Employee Termination Period Following Purchase Date To Receive Shares Subject To Risk Of Forfeiture</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture_documentation_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Employee Termination Period Following Purchase Date To Receive Shares Subject To Risk Of Forfeiture</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture" xlink:to="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccountsReceivableGrossCurrent_beb6c4d1-c1c7-4203-b99e-b883a8780c07_verboseLabel_en-US" xlink:label="lab_us-gaap_AccountsReceivableGrossCurrent" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts receivable</link:label>
    <link:label id="lab_us-gaap_AccountsReceivableGrossCurrent_label_en-US" xlink:label="lab_us-gaap_AccountsReceivableGrossCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable, before Allowance for Credit Loss, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableGrossCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsReceivableGrossCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccountsReceivableGrossCurrent" xlink:to="lab_us-gaap_AccountsReceivableGrossCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EquityComponentDomain_1477692a-d0e0-43e0-94fd-9dae964dd644_terseLabel_en-US" xlink:label="lab_us-gaap_EquityComponentDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Equity Component [Domain]</link:label>
    <link:label id="lab_us-gaap_EquityComponentDomain_label_en-US" xlink:label="lab_us-gaap_EquityComponentDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Equity Component [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityComponentDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EquityComponentDomain" xlink:to="lab_us-gaap_EquityComponentDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SubsequentEventTypeDomain_71e273b5-ad06-4002-8109-0d2cc1548ffc_terseLabel_en-US" xlink:label="lab_us-gaap_SubsequentEventTypeDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event Type [Domain]</link:label>
    <link:label id="lab_us-gaap_SubsequentEventTypeDomain_label_en-US" xlink:label="lab_us-gaap_SubsequentEventTypeDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event Type [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubsequentEventTypeDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SubsequentEventTypeDomain" xlink:to="lab_us-gaap_SubsequentEventTypeDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AssetsFairValueDisclosure_88efe3f5-deeb-4da5-b006-b5ff7c4b0c91_totalLabel_en-US" xlink:label="lab_us-gaap_AssetsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total assets</link:label>
    <link:label id="lab_us-gaap_AssetsFairValueDisclosure_label_en-US" xlink:label="lab_us-gaap_AssetsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Assets, Fair Value Disclosure</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsFairValueDisclosure" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AssetsFairValueDisclosure"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AssetsFairValueDisclosure" xlink:to="lab_us-gaap_AssetsFairValueDisclosure" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance_221d3ea5-78ad-4c45-87a1-f128cf44c4a3_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Change in deferred tax assets valuation allowance, amount</link:label>
    <link:label id="lab_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance_label_en-US" xlink:label="lab_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Change in Deferred Tax Assets Valuation Allowance, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:to="lab_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_IncomeTaxesLineItems_80b668c8-0871-492c-aa76-0f7cb37777c7_terseLabel_en-US" xlink:label="lab_calx_IncomeTaxesLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Taxes [Line Items]</link:label>
    <link:label id="lab_calx_IncomeTaxesLineItems_label_en-US" xlink:label="lab_calx_IncomeTaxesLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Taxes [Line Items]</link:label>
    <link:label id="lab_calx_IncomeTaxesLineItems_documentation_en-US" xlink:label="lab_calx_IncomeTaxesLineItems" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Taxes [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_IncomeTaxesLineItems" xlink:href="calx-20221231.xsd#calx_IncomeTaxesLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_IncomeTaxesLineItems" xlink:to="lab_calx_IncomeTaxesLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringPlanAxis_e993fa93-61a9-4455-a85c-6e40083451ed_terseLabel_en-US" xlink:label="lab_us-gaap_RestructuringPlanAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Plan [Axis]</link:label>
    <link:label id="lab_us-gaap_RestructuringPlanAxis_label_en-US" xlink:label="lab_us-gaap_RestructuringPlanAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Plan [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringPlanAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringPlanAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringPlanAxis" xlink:to="lab_us-gaap_RestructuringPlanAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions_cf50ce9a-b253-49e8-bbcc-d9c17390c958_terseLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Additions for tax positions related to current year</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions_label_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits, Increase Resulting from Current Period Tax Positions</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:to="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage_fe6cd19c-833c-48d2-88f4-d000af223307_terseLabel_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Award vesting rights, percentage</link:label>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage_label_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Award Vesting Rights, Percentage</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage" xlink:to="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock_35b87a7b-f073-498a-bb77-03c95cc9889d_terseLabel_en-US" xlink:label="lab_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits Activity</link:label>
    <link:label id="lab_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock_label_en-US" xlink:label="lab_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Summary of Income Tax Contingencies [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SummaryOfIncomeTaxContingenciesTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock" xlink:to="lab_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PlanNameAxis_86f2f1ea-e896-4278-84ed-5bcfc0e4cae9_terseLabel_en-US" xlink:label="lab_us-gaap_PlanNameAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Plan Name [Axis]</link:label>
    <link:label id="lab_us-gaap_PlanNameAxis_label_en-US" xlink:label="lab_us-gaap_PlanNameAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Plan Name [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PlanNameAxis" xlink:to="lab_us-gaap_PlanNameAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ContractWithCustomerAssetNet_08593eee-c1fe-4c26-87ba-3301811f838c_terseLabel_en-US" xlink:label="lab_us-gaap_ContractWithCustomerAssetNet" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract with customer, asset</link:label>
    <link:label id="lab_us-gaap_ContractWithCustomerAssetNet_label_en-US" xlink:label="lab_us-gaap_ContractWithCustomerAssetNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract with Customer, Asset, after Allowance for Credit Loss</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerAssetNet" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ContractWithCustomerAssetNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ContractWithCustomerAssetNet" xlink:to="lab_us-gaap_ContractWithCustomerAssetNet" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_CashCashEquivalentsAndMarketableSecurities_6919e168-6efe-45ba-ad6a-9effe3f1f35d_totalLabel_en-US" xlink:label="lab_calx_CashCashEquivalentsAndMarketableSecurities" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total cash, cash equivalents, and marketable securities</link:label>
    <link:label id="lab_calx_CashCashEquivalentsAndMarketableSecurities_label_en-US" xlink:label="lab_calx_CashCashEquivalentsAndMarketableSecurities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash, Cash Equivalents, And Marketable Securities</link:label>
    <link:label id="lab_calx_CashCashEquivalentsAndMarketableSecurities_documentation_en-US" xlink:label="lab_calx_CashCashEquivalentsAndMarketableSecurities" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash, Cash Equivalents, And Marketable Securities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CashCashEquivalentsAndMarketableSecurities" xlink:href="calx-20221231.xsd#calx_CashCashEquivalentsAndMarketableSecurities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_CashCashEquivalentsAndMarketableSecurities" xlink:to="lab_calx_CashCashEquivalentsAndMarketableSecurities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList_0297218d-9dec-4854-bfe5-dafdb457d987_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating lease, liability, current, statement of financial position</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Liability, Current, Statement of Financial Position [Extensible Enumeration]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList" xlink:to="lab_us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SupplementalCashFlowInformationAbstract_3dcd0d10-c9ad-424e-b67f-59b46a941585_terseLabel_en-US" xlink:label="lab_us-gaap_SupplementalCashFlowInformationAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Supplemental disclosures of cash flow information:</link:label>
    <link:label id="lab_us-gaap_SupplementalCashFlowInformationAbstract_label_en-US" xlink:label="lab_us-gaap_SupplementalCashFlowInformationAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Supplemental Cash Flow Information [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SupplementalCashFlowInformationAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SupplementalCashFlowInformationAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="lab_us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice_2faacb02-52b4-45fe-9a83-9e6b94b37e67_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options forfeited (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Forfeitures in Period, Weighted Average Exercise Price</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_ExecutiveOfficerMember_fc55ddcc-5970-4a0e-9ec4-b5e1635fe9c3_terseLabel_en-US" xlink:label="lab_srt_ExecutiveOfficerMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Executive Officer</link:label>
    <link:label id="lab_srt_ExecutiveOfficerMember_label_en-US" xlink:label="lab_srt_ExecutiveOfficerMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Executive Officer [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ExecutiveOfficerMember" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ExecutiveOfficerMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_ExecutiveOfficerMember" xlink:to="lab_srt_ExecutiveOfficerMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions_9d498482-0df9-4027-98bf-bb7ddde455dc_terseLabel_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized stock-based compensation expense</link:label>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions_label_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Payment Arrangement, Nonvested Award, Excluding Option, Cost Not yet Recognized, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions" xlink:to="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_PercentOfImpliedVolatility_a1ba9fe4-82a5-4753-bffe-7a4b0cf2df8a_terseLabel_en-US" xlink:label="lab_calx_PercentOfImpliedVolatility" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Percent of implied volatility</link:label>
    <link:label id="lab_calx_PercentOfImpliedVolatility_label_en-US" xlink:label="lab_calx_PercentOfImpliedVolatility" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Percent of Implied Volatility</link:label>
    <link:label id="lab_calx_PercentOfImpliedVolatility_documentation_en-US" xlink:label="lab_calx_PercentOfImpliedVolatility" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Percent of Implied Volatility</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PercentOfImpliedVolatility" xlink:href="calx-20221231.xsd#calx_PercentOfImpliedVolatility"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_PercentOfImpliedVolatility" xlink:to="lab_calx_PercentOfImpliedVolatility" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PlanNameDomain_56305af3-d469-4764-8f0b-b178c5ba8b2a_terseLabel_en-US" xlink:label="lab_us-gaap_PlanNameDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Plan Name [Domain]</link:label>
    <link:label id="lab_us-gaap_PlanNameDomain_label_en-US" xlink:label="lab_us-gaap_PlanNameDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Plan Name [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PlanNameDomain" xlink:to="lab_us-gaap_PlanNameDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StatementOfCashFlowsAbstract_151b79f4-7692-4f53-bad4-ea44cc4d54d1_terseLabel_en-US" xlink:label="lab_us-gaap_StatementOfCashFlowsAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement of Cash Flows [Abstract]</link:label>
    <link:label id="lab_us-gaap_StatementOfCashFlowsAbstract_label_en-US" xlink:label="lab_us-gaap_StatementOfCashFlowsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement of Cash Flows [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfCashFlowsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementOfCashFlowsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract" xlink:to="lab_us-gaap_StatementOfCashFlowsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityAddressStateOrProvince_801c14f9-9671-4c72-83ce-ccdd6acc0c77_terseLabel_en-US" xlink:label="lab_dei_EntityAddressStateOrProvince" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, State or Province</link:label>
    <link:label id="lab_dei_EntityAddressStateOrProvince_label_en-US" xlink:label="lab_dei_EntityAddressStateOrProvince" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, State or Province</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressStateOrProvince" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityAddressStateOrProvince"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityAddressStateOrProvince" xlink:to="lab_dei_EntityAddressStateOrProvince" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueInputsLevel1Member_776fb451-684d-4422-a372-9210644ccfa6_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueInputsLevel1Member" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Level 1</link:label>
    <link:label id="lab_us-gaap_FairValueInputsLevel1Member_label_en-US" xlink:label="lab_us-gaap_FairValueInputsLevel1Member" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Inputs, Level 1 [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel1Member" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueInputsLevel1Member"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueInputsLevel1Member" xlink:to="lab_us-gaap_FairValueInputsLevel1Member" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EmployeeStockMember_65181f51-051f-4b45-8f2a-200d9346880e_terseLabel_en-US" xlink:label="lab_us-gaap_EmployeeStockMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">ESPP</link:label>
    <link:label id="lab_us-gaap_EmployeeStockMember_label_en-US" xlink:label="lab_us-gaap_EmployeeStockMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Stock [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EmployeeStockMember" xlink:to="lab_us-gaap_EmployeeStockMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract_e71d5c09-0f4f-4a39-aaf7-e27fd883705c_verboseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other comprehensive income (loss), net of tax:</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Comprehensive Income (Loss), Net of Tax [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:to="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2_ae91a900-fbc7-4fe5-9f94-f5679dca0a20_terseLabel_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted-average remaining contractual term, stock options outstanding</link:label>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2_label_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:to="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AwardTypeAxis_f59eceef-d764-4095-8587-1d7ebcb0d7ed_terseLabel_en-US" xlink:label="lab_us-gaap_AwardTypeAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Award Type [Axis]</link:label>
    <link:label id="lab_us-gaap_AwardTypeAxis_label_en-US" xlink:label="lab_us-gaap_AwardTypeAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Award Type [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AwardTypeAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AwardTypeAxis" xlink:to="lab_us-gaap_AwardTypeAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract_ff8688d9-5b57-4172-a104-c0f4821a573c_verboseLabel_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Denominator:</link:label>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract_label_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted Average Number of Shares Outstanding, Basic [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract" xlink:to="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInOperatingActivities_3d000d60-868a-43f5-9462-cb603086d4e3_totalLabel_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net cash provided by operating activities</link:label>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInOperatingActivities_label_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Cash Provided by (Used in) Operating Activities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="lab_us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseLiabilityCurrent_8a8608e5-f842-4563-8a2a-46da69ea9c40_verboseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiabilityCurrent" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating leases</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseLiabilityCurrent_61d60da3-1afd-4a36-a0cf-23ea2cba3648_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiabilityCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued liabilities - current portion of operating leases</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseLiabilityCurrent_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiabilityCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Liability, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiabilityCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseLiabilityCurrent" xlink:to="lab_us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock_db6594d9-771c-4ad5-a397-533954ca50eb_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-Sale</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-Sale [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember_9978d8dc-f33a-4c60-ab23-39382d5de2b0_terseLabel_en-US" xlink:label="lab_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2017 Nonqualified Employee Stock Purchase Plan</link:label>
    <link:label id="lab_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember_label_en-US" xlink:label="lab_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2017 Nonqualified Employee Stock Purchase Plan [Member]</link:label>
    <link:label id="lab_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember_documentation_en-US" xlink:label="lab_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2017 Nonqualified Employee Stock Purchase Plan</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember" xlink:href="calx-20221231.xsd#calx_A2017NonqualifiedEmployeeStockPurchasePlanMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember" xlink:to="lab_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_ValuationAndQualifyingAccountsDisclosureLineItems_77f9353c-6821-4018-b040-191204f65067_terseLabel_en-US" xlink:label="lab_srt_ValuationAndQualifyingAccountsDisclosureLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Line Items]</link:label>
    <link:label id="lab_srt_ValuationAndQualifyingAccountsDisclosureLineItems_label_en-US" xlink:label="lab_srt_ValuationAndQualifyingAccountsDisclosureLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ValuationAndQualifyingAccountsDisclosureLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems" xlink:to="lab_srt_ValuationAndQualifyingAccountsDisclosureLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ScheduleOfCertainTermsTableTable_6c9dea42-a2c9-45f4-93be-3aba57ba18a4_terseLabel_en-US" xlink:label="lab_calx_ScheduleOfCertainTermsTableTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Certain Terms [Table]</link:label>
    <link:label id="lab_calx_ScheduleOfCertainTermsTableTable_label_en-US" xlink:label="lab_calx_ScheduleOfCertainTermsTableTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Certain Terms [Table] [Table]</link:label>
    <link:label id="lab_calx_ScheduleOfCertainTermsTableTable_documentation_en-US" xlink:label="lab_calx_ScheduleOfCertainTermsTableTable" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of ranges of cutomer payment term and warranty term.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ScheduleOfCertainTermsTableTable" xlink:href="calx-20221231.xsd#calx_ScheduleOfCertainTermsTableTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ScheduleOfCertainTermsTableTable" xlink:to="lab_calx_ScheduleOfCertainTermsTableTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherLiabilities_bca18b8c-df75-454c-8078-4e0e3cd42c3f_terseLabel_en-US" xlink:label="lab_us-gaap_OtherLiabilities" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other liabilities</link:label>
    <link:label id="lab_us-gaap_OtherLiabilities_label_en-US" xlink:label="lab_us-gaap_OtherLiabilities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Liabilities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherLiabilities" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherLiabilities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherLiabilities" xlink:to="lab_us-gaap_OtherLiabilities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod_e1f0fadc-90fd-4375-99ea-bca57b1dea2f_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options forfeited (in shares)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Forfeitures in Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_A2021PerformanceTargetsMember_df323c6f-2cc7-43fb-aeee-3c8800633624_terseLabel_en-US" xlink:label="lab_calx_A2021PerformanceTargetsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2021 Performance Targets</link:label>
    <link:label id="lab_calx_A2021PerformanceTargetsMember_label_en-US" xlink:label="lab_calx_A2021PerformanceTargetsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2021 Performance Targets [Member]</link:label>
    <link:label id="lab_calx_A2021PerformanceTargetsMember_documentation_en-US" xlink:label="lab_calx_A2021PerformanceTargetsMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2021 Performance Targets</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2021PerformanceTargetsMember" xlink:href="calx-20221231.xsd#calx_A2021PerformanceTargetsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_A2021PerformanceTargetsMember" xlink:to="lab_calx_A2021PerformanceTargetsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_DocumentAnnualReport_ae086df4-bd58-430d-b945-ebe374a83fa1_terseLabel_en-US" xlink:label="lab_dei_DocumentAnnualReport" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Annual Report</link:label>
    <link:label id="lab_dei_DocumentAnnualReport_label_en-US" xlink:label="lab_dei_DocumentAnnualReport" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Annual Report</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentAnnualReport" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_DocumentAnnualReport"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_DocumentAnnualReport" xlink:to="lab_dei_DocumentAnnualReport" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_AccruedBusinessEventsCurrent_e92dd039-67c9-42f4-b0a9-847e31ed7e5a_terseLabel_en-US" xlink:label="lab_calx_AccruedBusinessEventsCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business events</link:label>
    <link:label id="lab_calx_AccruedBusinessEventsCurrent_label_en-US" xlink:label="lab_calx_AccruedBusinessEventsCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Business Events, Current</link:label>
    <link:label id="lab_calx_AccruedBusinessEventsCurrent_documentation_en-US" xlink:label="lab_calx_AccruedBusinessEventsCurrent" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Business Events, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedBusinessEventsCurrent" xlink:href="calx-20221231.xsd#calx_AccruedBusinessEventsCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_AccruedBusinessEventsCurrent" xlink:to="lab_calx_AccruedBusinessEventsCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfCashAndCashEquivalentsTable_378c88d3-e145-4578-99f9-b363581f1eb5_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfCashAndCashEquivalentsTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Cash and Cash Equivalents [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfCashAndCashEquivalentsTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfCashAndCashEquivalentsTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Cash and Cash Equivalents [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTable" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfCashAndCashEquivalentsTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTable" xlink:to="lab_us-gaap_ScheduleOfCashAndCashEquivalentsTable" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_SubsidiariesMember_3b4b39e1-993a-4cb1-9d39-cad2fd392736_terseLabel_en-US" xlink:label="lab_srt_SubsidiariesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsidiaries</link:label>
    <link:label id="lab_srt_SubsidiariesMember_label_en-US" xlink:label="lab_srt_SubsidiariesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsidiaries [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SubsidiariesMember" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SubsidiariesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_SubsidiariesMember" xlink:to="lab_srt_SubsidiariesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_Liabilities_853a74e1-bd29-4c5c-981c-c5f09d975826_totalLabel_en-US" xlink:label="lab_us-gaap_Liabilities" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total liabilities</link:label>
    <link:label id="lab_us-gaap_Liabilities_label_en-US" xlink:label="lab_us-gaap_Liabilities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Liabilities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Liabilities" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Liabilities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_Liabilities" xlink:to="lab_us-gaap_Liabilities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_ed3c67b8-9a0b-496e-801c-c4d010d47189_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating lease, weighted average remaining lease term</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Weighted Average Remaining Lease Term</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:to="lab_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_c6663237-4ea3-46ec-a0ef-21a9118cf7c0_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_StatementGeographicalAxis_6f8dfd76-2ba1-4370-9e8f-dd80ceb1f5d1_terseLabel_en-US" xlink:label="lab_srt_StatementGeographicalAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Geographical [Axis]</link:label>
    <link:label id="lab_srt_StatementGeographicalAxis_label_en-US" xlink:label="lab_srt_StatementGeographicalAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Geographical [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_StatementGeographicalAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_StatementGeographicalAxis" xlink:to="lab_srt_StatementGeographicalAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_27a69520-dbb5-47a9-a81c-04ef0b4431fd_verboseLabel_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Investing activities:</link:label>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_label_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Cash Provided by (Used in) Investing Activities [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="lab_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodValueNewIssues_8c99d38b-d9d6-45c5-837b-d81edaefb115_terseLabel_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodValueNewIssues" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Issuance of common stock in connection with public offering, net of expenses</link:label>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodValueNewIssues_label_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodValueNewIssues" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Issued During Period, Value, New Issues</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodValueNewIssues" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodValueNewIssues"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockIssuedDuringPeriodValueNewIssues" xlink:to="lab_us-gaap_StockIssuedDuringPeriodValueNewIssues" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProductWarrantyAccrualPayments_f0b85573-6680-4463-bb33-2de1cdb71d24_negatedLabel_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrualPayments" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Utilization of reserve</link:label>
    <link:label id="lab_us-gaap_ProductWarrantyAccrualPayments_label_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrualPayments" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Standard and Extended Product Warranty Accrual, Decrease for Payments</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualPayments" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProductWarrantyAccrualPayments"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProductWarrantyAccrualPayments" xlink:to="lab_us-gaap_ProductWarrantyAccrualPayments" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityCommonStockSharesOutstanding_c6a413f1-c309-4f70-85d0-d982d2792757_terseLabel_en-US" xlink:label="lab_dei_EntityCommonStockSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Common Stock, Shares Outstanding</link:label>
    <link:label id="lab_dei_EntityCommonStockSharesOutstanding_label_en-US" xlink:label="lab_dei_EntityCommonStockSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Common Stock, Shares Outstanding</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCommonStockSharesOutstanding" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityCommonStockSharesOutstanding"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityCommonStockSharesOutstanding" xlink:to="lab_dei_EntityCommonStockSharesOutstanding" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_bb060780-b6ba-4072-a8d8-e69e0bf7c460_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Hierarchy and NAV [Domain]</link:label>
    <link:label id="lab_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_label_en-US" xlink:label="lab_us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Hierarchy and NAV [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:to="lab_us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy_3bc999ae-821b-4887-ad88-ef4bcba8585a_terseLabel_en-US" xlink:label="lab_us-gaap_ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Allowance for Doubtful Accounts</link:label>
    <link:label id="lab_us-gaap_ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy_label_en-US" xlink:label="lab_us-gaap_ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Receivables, Trade and Other Accounts Receivable, Allowance for Doubtful Accounts, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy" xlink:to="lab_us-gaap_ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentTextBlock_a40d95c9-f87f-4935-a0a8-928f8ca22a3b_verboseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property and Equipment, net</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentTextBlock_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueFromContractWithCustomerPolicyTextBlock_02dad278-7938-471b-ae2b-d12060048dff_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueFromContractWithCustomerPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue Recognition, Contract Costs, and Deferred Revenue</link:label>
    <link:label id="lab_us-gaap_RevenueFromContractWithCustomerPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_RevenueFromContractWithCustomerPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue from Contract with Customer [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerPolicyTextBlock" xlink:to="lab_us-gaap_RevenueFromContractWithCustomerPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_2e30bcf3-f963-46b1-9805-da78b4d06fa1_terseLabel_en-US" xlink:label="lab_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current:</link:label>
    <link:label id="lab_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_label_en-US" xlink:label="lab_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current Income Tax Expense (Benefit), Continuing Operations [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="lab_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember_02be9cf3-bf38-4552-b654-bc4de2e0c3fc_terseLabel_en-US" xlink:label="lab_us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrealized Gains and Losses on Available-for-Sale Marketable Securities</link:label>
    <link:label id="lab_us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember_label_en-US" xlink:label="lab_us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">AOCI, Accumulated Gain (Loss), Debt Securities, Available-for-Sale, Parent [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember" xlink:to="lab_us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PreferredStockSharesIssued_e18ed650-5f56-4ba3-afc6-fd7b3d7cbe41_verboseLabel_en-US" xlink:label="lab_us-gaap_PreferredStockSharesIssued" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred stock, shares issued (in shares)</link:label>
    <link:label id="lab_us-gaap_PreferredStockSharesIssued_label_en-US" xlink:label="lab_us-gaap_PreferredStockSharesIssued" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred Stock, Shares Issued</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesIssued" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockSharesIssued"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PreferredStockSharesIssued" xlink:to="lab_us-gaap_PreferredStockSharesIssued" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_DocumentType_306bb7d9-3fb5-49b1-b079-84ad9053c82b_terseLabel_en-US" xlink:label="lab_dei_DocumentType" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Type</link:label>
    <link:label id="lab_dei_DocumentType_label_en-US" xlink:label="lab_dei_DocumentType" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Type</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentType" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_DocumentType"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_DocumentType" xlink:to="lab_dei_DocumentType" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_21603087-7b2a-49b9-b189-34ff2d604854_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Options, Weighted-Average Exercise Price Per Share:</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_SharesReservedForFutureIssuanceTableTextBlock_8e6abeaf-b4d9-4022-8c52-f6ec1373d5a3_terseLabel_en-US" xlink:label="lab_calx_SharesReservedForFutureIssuanceTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares Reserved For Future Issuance</link:label>
    <link:label id="lab_calx_SharesReservedForFutureIssuanceTableTextBlock_label_en-US" xlink:label="lab_calx_SharesReservedForFutureIssuanceTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares Reserved For Future Issuance [Table Text Block]</link:label>
    <link:label id="lab_calx_SharesReservedForFutureIssuanceTableTextBlock_documentation_en-US" xlink:label="lab_calx_SharesReservedForFutureIssuanceTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Represents the schedule to summarize the number of common shares reserved for future issuance. [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SharesReservedForFutureIssuanceTableTextBlock" xlink:href="calx-20221231.xsd#calx_SharesReservedForFutureIssuanceTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_SharesReservedForFutureIssuanceTableTextBlock" xlink:to="lab_calx_SharesReservedForFutureIssuanceTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentUsefulLife_6675d23f-39d4-4e93-8f26-7a98cf10d564_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Useful life of property and equipment</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentUsefulLife_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment, Useful Life</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskBenchmarkDomain_8990f052-fe32-413b-9645-fa522387f516_terseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskBenchmarkDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Benchmark [Domain]</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskBenchmarkDomain_label_en-US" xlink:label="lab_us-gaap_ConcentrationRiskBenchmarkDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Benchmark [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskBenchmarkDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskBenchmarkDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConcentrationRiskBenchmarkDomain" xlink:to="lab_us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_08006ede-c9ae-4b8f-aeca-e89b30b8e4d2_terseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Assets, Major Class Name [Domain]</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Assets, Major Class Name [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CompensationAndEmployeeBenefitPlansTextBlock_2dc5aefe-838a-4bd5-a199-9e6310ecbfcc_terseLabel_en-US" xlink:label="lab_us-gaap_CompensationAndEmployeeBenefitPlansTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Benefit Plan</link:label>
    <link:label id="lab_us-gaap_CompensationAndEmployeeBenefitPlansTextBlock_label_en-US" xlink:label="lab_us-gaap_CompensationAndEmployeeBenefitPlansTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Compensation and Employee Benefit Plans [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CompensationAndEmployeeBenefitPlansTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CompensationAndEmployeeBenefitPlansTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CompensationAndEmployeeBenefitPlansTextBlock" xlink:to="lab_us-gaap_CompensationAndEmployeeBenefitPlansTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityShellCompany_45115b68-5877-458c-b481-314b4d13c61d_terseLabel_en-US" xlink:label="lab_dei_EntityShellCompany" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Shell Company</link:label>
    <link:label id="lab_dei_EntityShellCompany_label_en-US" xlink:label="lab_dei_EntityShellCompany" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Shell Company</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityShellCompany" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityShellCompany"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityShellCompany" xlink:to="lab_dei_EntityShellCompany" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredIncomeTaxExpenseBenefit_3f6c10d3-d3d4-442a-a044-b5494dae8d08_totalLabel_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred income tax</link:label>
    <link:label id="lab_us-gaap_DeferredIncomeTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Income Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:to="lab_us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInAccruedLiabilities_8ed05467-b0c2-4fef-8d08-e3bcb395b279_verboseLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInAccruedLiabilities" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued liabilities</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInAccruedLiabilities_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInAccruedLiabilities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Accrued Liabilities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInAccruedLiabilities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities" xlink:to="lab_us-gaap_IncreaseDecreaseInAccruedLiabilities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions_48462f76-6860-47c4-b71e-2570a5767cdd_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Reduction for tax positions related to prior year</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions_label_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits, Decrease Resulting from Prior Period Tax Positions</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions" xlink:to="lab_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInDeferredRevenue_e91c684c-317b-4f2c-8c72-0f854bb08377_verboseLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInDeferredRevenue" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred revenue</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInDeferredRevenue_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInDeferredRevenue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Deferred Revenue</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInDeferredRevenue" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInDeferredRevenue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInDeferredRevenue" xlink:to="lab_us-gaap_IncreaseDecreaseInDeferredRevenue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskTable_fc4ae5dc-14ac-452b-be34-7dc2dfdddb90_terseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk [Table]</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskTable_label_en-US" xlink:label="lab_us-gaap_ConcentrationRiskTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTable" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConcentrationRiskTable" xlink:to="lab_us-gaap_ConcentrationRiskTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_934b77f6-9535-490e-8543-e0d3682320e6_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2023</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, to be Paid, Year One</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FinancialInstrumentAxis_c5817603-3fb6-4f36-8e86-01431de26f2d_terseLabel_en-US" xlink:label="lab_us-gaap_FinancialInstrumentAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Financial Instrument [Axis]</link:label>
    <link:label id="lab_us-gaap_FinancialInstrumentAxis_label_en-US" xlink:label="lab_us-gaap_FinancialInstrumentAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Financial Instrument [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FinancialInstrumentAxis" xlink:to="lab_us-gaap_FinancialInstrumentAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesDomain_30469ac5-40b0-49ee-b03a-100dead13321_terseLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves [Domain]</link:label>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesDomain_label_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDomain" xlink:to="lab_us-gaap_ValuationAllowancesAndReservesDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SubsequentEventMember_759de4bc-8f15-42f3-893c-c4781e0cd92a_terseLabel_en-US" xlink:label="lab_us-gaap_SubsequentEventMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event</link:label>
    <link:label id="lab_us-gaap_SubsequentEventMember_label_en-US" xlink:label="lab_us-gaap_SubsequentEventMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubsequentEventMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SubsequentEventMember" xlink:to="lab_us-gaap_SubsequentEventMember" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_DocumentPeriodEndDate_04c2d5b6-a2e2-419c-bbd7-1a284ef1755c_terseLabel_en-US" xlink:label="lab_dei_DocumentPeriodEndDate" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Period End Date</link:label>
    <link:label id="lab_dei_DocumentPeriodEndDate_label_en-US" xlink:label="lab_dei_DocumentPeriodEndDate" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Period End Date</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentPeriodEndDate" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_DocumentPeriodEndDate"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_DocumentPeriodEndDate" xlink:to="lab_dei_DocumentPeriodEndDate" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationAwardTrancheOneMember_c1e2d0fb-d5b7-402d-a5f9-dcf640843c5e_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationAwardTrancheOneMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Period One</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationAwardTrancheOneMember_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationAwardTrancheOneMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Payment Arrangement, Tranche One [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationAwardTrancheOneMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationAwardTrancheOneMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationAwardTrancheOneMember" xlink:to="lab_us-gaap_ShareBasedCompensationAwardTrancheOneMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProductWarrantyAccrualClassifiedCurrent_882bab5d-7b4b-4cec-9142-2712343236c6_terseLabel_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrualClassifiedCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current portion of warranty and retrofit</link:label>
    <link:label id="lab_us-gaap_ProductWarrantyAccrualClassifiedCurrent_label_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrualClassifiedCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product Warranty Accrual, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProductWarrantyAccrualClassifiedCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent" xlink:to="lab_us-gaap_ProductWarrantyAccrualClassifiedCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_AccruedFreight_0cbe778c-e0d7-47b0-9090-bd4e0828780c_terseLabel_en-US" xlink:label="lab_calx_AccruedFreight" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Freight</link:label>
    <link:label id="lab_calx_AccruedFreight_label_en-US" xlink:label="lab_calx_AccruedFreight" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Freight</link:label>
    <link:label id="lab_calx_AccruedFreight_documentation_en-US" xlink:label="lab_calx_AccruedFreight" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Freight</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedFreight" xlink:href="calx-20221231.xsd#calx_AccruedFreight"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_AccruedFreight" xlink:to="lab_calx_AccruedFreight" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleTable_ba23fe77-9950-44ee-8def-8e6e448f62d6_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale [Table]</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleTable_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-Sale [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleTable" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleTable" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock_eb67d4d2-c291-48e9-bfc8-6a3c77a55b6b_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Accumulated Other Comprehensive Income (Loss)</link:label>
    <link:label id="lab_us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Accumulated Other Comprehensive Income (Loss) [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_Assets_55619407-99bd-4f1a-bd90-94da84a1ff67_totalLabel_en-US" xlink:label="lab_us-gaap_Assets" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total assets</link:label>
    <link:label id="lab_us-gaap_Assets_label_en-US" xlink:label="lab_us-gaap_Assets" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Assets</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Assets" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Assets"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_Assets" xlink:to="lab_us-gaap_Assets" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EarningsPerShareAbstract_76920134-5594-420b-8e81-09edf9c31be9_terseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Earnings Per Share [Abstract]</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareAbstract_label_en-US" xlink:label="lab_us-gaap_EarningsPerShareAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Earnings Per Share [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EarningsPerShareAbstract" xlink:to="lab_us-gaap_EarningsPerShareAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_CostOfRevenueProductsMember_b6b442d6-1459-4ed8-b299-b68c948e7838_terseLabel_en-US" xlink:label="lab_calx_CostOfRevenueProductsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Products</link:label>
    <link:label id="lab_calx_CostOfRevenueProductsMember_label_en-US" xlink:label="lab_calx_CostOfRevenueProductsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cost Of Revenue, Products [Member]</link:label>
    <link:label id="lab_calx_CostOfRevenueProductsMember_documentation_en-US" xlink:label="lab_calx_CostOfRevenueProductsMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cost Of Revenue, Products [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CostOfRevenueProductsMember" xlink:href="calx-20221231.xsd#calx_CostOfRevenueProductsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_CostOfRevenueProductsMember" xlink:to="lab_calx_CostOfRevenueProductsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeStatementLocationAxis_c4e6a982-2500-43bf-b8e2-5b8ba7717b9e_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeStatementLocationAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Statement Location [Axis]</link:label>
    <link:label id="lab_us-gaap_IncomeStatementLocationAxis_label_en-US" xlink:label="lab_us-gaap_IncomeStatementLocationAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Statement Location [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeStatementLocationAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeStatementLocationAxis" xlink:to="lab_us-gaap_IncomeStatementLocationAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract_59cb2287-e399-4fce-8a97-ae5c3ee6efa0_verboseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted average assumptions used to estimate fair value of stock options</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions and Methodology [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_A2019EquityIncentiveAwardPlanMember_bb369b2b-69cb-497d-8931-03ff5e323bb3_terseLabel_en-US" xlink:label="lab_calx_A2019EquityIncentiveAwardPlanMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2019 Equity Incentive Award Plan</link:label>
    <link:label id="lab_calx_A2019EquityIncentiveAwardPlanMember_label_en-US" xlink:label="lab_calx_A2019EquityIncentiveAwardPlanMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2019 Equity Incentive Award Plan [Member]</link:label>
    <link:label id="lab_calx_A2019EquityIncentiveAwardPlanMember_documentation_en-US" xlink:label="lab_calx_A2019EquityIncentiveAwardPlanMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2019 Equity Incentive Award Plan [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2019EquityIncentiveAwardPlanMember" xlink:href="calx-20221231.xsd#calx_A2019EquityIncentiveAwardPlanMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_A2019EquityIncentiveAwardPlanMember" xlink:to="lab_calx_A2019EquityIncentiveAwardPlanMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccruedLiabilitiesCurrent_674274ab-999a-41ec-8452-e899d813a343_verboseLabel_en-US" xlink:label="lab_us-gaap_AccruedLiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued liabilities</link:label>
    <link:label id="lab_us-gaap_AccruedLiabilitiesCurrent_9bfd9fb7-4b52-4693-b3f5-fc295f23c793_totalLabel_en-US" xlink:label="lab_us-gaap_AccruedLiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total accrued liabilities</link:label>
    <link:label id="lab_us-gaap_AccruedLiabilitiesCurrent_label_en-US" xlink:label="lab_us-gaap_AccruedLiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Liabilities, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccruedLiabilitiesCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent" xlink:to="lab_us-gaap_AccruedLiabilitiesCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_71b0fc1a-8461-4254-ac96-3e66cb026f77_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Restructuring and Related Costs [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Restructuring and Related Costs [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfRestructuringAndRelatedCostsTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable" xlink:to="lab_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice_3a9163a3-8ccf-4dbf-806d-7ed5ff61fa4c_verboseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options exercised (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Exercises in Period, Weighted Average Exercise Price</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInFinancingActivities_f13f41f3-86a9-4097-8877-eeea12e15a98_totalLabel_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net cash provided by financing activities</link:label>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInFinancingActivities_label_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Cash Provided by (Used in) Financing Activities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="lab_us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccountingPoliciesAbstract_bee87f2a-a7c5-4030-a8bf-e35d2fe6bf02_terseLabel_en-US" xlink:label="lab_us-gaap_AccountingPoliciesAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounting Policies [Abstract]</link:label>
    <link:label id="lab_us-gaap_AccountingPoliciesAbstract_label_en-US" xlink:label="lab_us-gaap_AccountingPoliciesAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounting Policies [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingPoliciesAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccountingPoliciesAbstract" xlink:to="lab_us-gaap_AccountingPoliciesAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockRepurchaseProgramAuthorizedAmount1_e978bcfd-0085-4a80-ab45-06a857c7cfa2_terseLabel_en-US" xlink:label="lab_us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock repurchase program, authorized amount</link:label>
    <link:label id="lab_us-gaap_StockRepurchaseProgramAuthorizedAmount1_label_en-US" xlink:label="lab_us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Repurchase Program, Authorized Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockRepurchaseProgramAuthorizedAmount1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:to="lab_us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EmployeeRelatedLiabilitiesCurrent_ec598022-b935-4b6d-9666-6bd1ea4dfd86_terseLabel_en-US" xlink:label="lab_us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Compensation and related benefits</link:label>
    <link:label id="lab_us-gaap_EmployeeRelatedLiabilitiesCurrent_label_en-US" xlink:label="lab_us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee-related Liabilities, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:to="lab_us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_add6398c-0b69-4d7b-84db-e9e7d62c4412_totalLabel_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income before income taxes</link:label>
    <link:label id="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_label_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockholdersEquityAbstract_8e84b033-c27a-4d0a-8953-0e093beca051_verboseLabel_en-US" xlink:label="lab_us-gaap_StockholdersEquityAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stockholders&#8217; equity:</link:label>
    <link:label id="lab_us-gaap_StockholdersEquityAbstract_label_en-US" xlink:label="lab_us-gaap_StockholdersEquityAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stockholders' Equity Attributable to Parent [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquityAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockholdersEquityAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockholdersEquityAbstract" xlink:to="lab_us-gaap_StockholdersEquityAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_be6ef5ec-be94-4714-b981-3a15e29371a0_verboseLabel_en-US" xlink:label="lab_us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Prepaid expenses and other current assets</link:label>
    <link:label id="lab_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_c3329409-5368-41ba-a170-24b85b92df38_totalLabel_en-US" xlink:label="lab_us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Prepaid expenses and other current assets</link:label>
    <link:label id="lab_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_label_en-US" xlink:label="lab_us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Prepaid Expense and Other Assets, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:to="lab_us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_cc1d145a-4266-47d9-934f-79051c0d675e_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign operations</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Foreign Income Tax Rate Differential, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredIncomeTaxesAndTaxCredits_cb93189b-646c-4c79-ad32-a87b0fc409f5_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred income taxes</link:label>
    <link:label id="lab_us-gaap_DeferredIncomeTaxesAndTaxCredits_label_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Income Taxes and Tax Credits</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxesAndTaxCredits"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:to="lab_us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EarningsPerShareTextBlock_d8714139-fd46-4b92-98bb-a75310f75adc_verboseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareTextBlock" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Income Per Common Share</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareTextBlock_label_en-US" xlink:label="lab_us-gaap_EarningsPerShareTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Earnings Per Share [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EarningsPerShareTextBlock" xlink:to="lab_us-gaap_EarningsPerShareTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_MajorCustomersAxis_47036a2f-376f-43b1-bdf1-030daca02602_terseLabel_en-US" xlink:label="lab_srt_MajorCustomersAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer [Axis]</link:label>
    <link:label id="lab_srt_MajorCustomersAxis_label_en-US" xlink:label="lab_srt_MajorCustomersAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MajorCustomersAxis" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_MajorCustomersAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_MajorCustomersAxis" xlink:to="lab_srt_MajorCustomersAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock_8258cee5-60b8-4c59-80e5-e22d99377c0b_verboseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Valuation Assumptions, Stock Options</link:label>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock_5b5b5fb8-aafb-4132-a434-cb3070810efb_terseLabel_en-US" xlink:label="lab_us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Disclosure of Share-based Compensation Arrangements by Share-based Payment Award</link:label>
    <link:label id="lab_us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock_label_en-US" xlink:label="lab_us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Disclosure of Share-Based Compensation Arrangements by Share-Based Payment Award [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock" xlink:to="lab_us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SupplementalBalanceSheetDisclosuresTextBlock_1aa62157-0407-46b6-b265-fb5d1676c378_verboseLabel_en-US" xlink:label="lab_us-gaap_SupplementalBalanceSheetDisclosuresTextBlock" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance Sheet Details</link:label>
    <link:label id="lab_us-gaap_SupplementalBalanceSheetDisclosuresTextBlock_label_en-US" xlink:label="lab_us-gaap_SupplementalBalanceSheetDisclosuresTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Supplemental Balance Sheet Disclosures [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SupplementalBalanceSheetDisclosuresTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SupplementalBalanceSheetDisclosuresTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SupplementalBalanceSheetDisclosuresTextBlock" xlink:to="lab_us-gaap_SupplementalBalanceSheetDisclosuresTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock_6d20bfc6-3719-41b8-befc-f4b89e0f66e0_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Components of Income Tax Expense (Benefit)</link:label>
    <link:label id="lab_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Components of Income Tax Expense (Benefit) [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_1a63542e-4e10-4026-8359-7661a6d62d99_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Award Type [Domain]</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Award Type [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance_cc795f95-f860-4241-81fd-ce95e168c83a_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Valuation allowance</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Change in Deferred Tax Assets Valuation Allowance, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_99457901-8617-4195-ac42-aafa342be11d_verboseLabel_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted-average amortization period</link:label>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_label_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:to="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1_7333ae39-652e-4c20-b5de-e01dcda78ff6_terseLabel_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted-average remaining contractual term, stock options exercisable</link:label>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1_label_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Weighted Average Remaining Contractual Term</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:to="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringPlanDomain_b49d9c08-ca3e-47db-a286-60ccef61fa7e_terseLabel_en-US" xlink:label="lab_us-gaap_RestructuringPlanDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Plan [Domain]</link:label>
    <link:label id="lab_us-gaap_RestructuringPlanDomain_label_en-US" xlink:label="lab_us-gaap_RestructuringPlanDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Plan [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringPlanDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringPlanDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringPlanDomain" xlink:to="lab_us-gaap_RestructuringPlanDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ComputerEquipmentMember_8675e201-c9bc-48cd-97b7-a4a91981ae40_terseLabel_en-US" xlink:label="lab_us-gaap_ComputerEquipmentMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Computer equipment</link:label>
    <link:label id="lab_us-gaap_ComputerEquipmentMember_label_en-US" xlink:label="lab_us-gaap_ComputerEquipmentMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Computer Equipment [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComputerEquipmentMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ComputerEquipmentMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ComputerEquipmentMember" xlink:to="lab_us-gaap_ComputerEquipmentMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GrossProfit_5eab9570-a9f4-4c3d-ac12-55e7ed1a1449_totalLabel_en-US" xlink:label="lab_us-gaap_GrossProfit" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross profit</link:label>
    <link:label id="lab_us-gaap_GrossProfit_label_en-US" xlink:label="lab_us-gaap_GrossProfit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross Profit</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GrossProfit" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GrossProfit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GrossProfit" xlink:to="lab_us-gaap_GrossProfit" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_LumenTechnologiesIncMember_4d8acfe9-88c4-4587-8c59-525ebccfe869_terseLabel_en-US" xlink:label="lab_calx_LumenTechnologiesIncMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lumen Technologies, Inc.</link:label>
    <link:label id="lab_calx_LumenTechnologiesIncMember_label_en-US" xlink:label="lab_calx_LumenTechnologiesIncMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lumen Technologies, Inc. [Member]</link:label>
    <link:label id="lab_calx_LumenTechnologiesIncMember_documentation_en-US" xlink:label="lab_calx_LumenTechnologiesIncMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lumen Technologies, Inc.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_LumenTechnologiesIncMember" xlink:href="calx-20221231.xsd#calx_LumenTechnologiesIncMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_LumenTechnologiesIncMember" xlink:to="lab_calx_LumenTechnologiesIncMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfOtherAssetsNoncurrentTextBlock_22b4d876-8172-42ed-9501-245c0acce350_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfOtherAssetsNoncurrentTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Other Assets, Noncurrent</link:label>
    <link:label id="lab_us-gaap_ScheduleOfOtherAssetsNoncurrentTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfOtherAssetsNoncurrentTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Other Assets, Noncurrent [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfOtherAssetsNoncurrentTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfOtherAssetsNoncurrentTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfOtherAssetsNoncurrentTextBlock" xlink:to="lab_us-gaap_ScheduleOfOtherAssetsNoncurrentTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityRegistrantName_a72db002-5d8e-4002-a7dd-3101807f3eac_terseLabel_en-US" xlink:label="lab_dei_EntityRegistrantName" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Registrant Name</link:label>
    <link:label id="lab_dei_EntityRegistrantName_label_en-US" xlink:label="lab_dei_EntityRegistrantName" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Registrant Name</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityRegistrantName" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityRegistrantName"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityRegistrantName" xlink:to="lab_dei_EntityRegistrantName" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodSharesNewIssues_8e487a22-9ded-4acf-b481-d55b7eba48e7_terseLabel_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodSharesNewIssues" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Issuance of common stock in connection with public offering, net of expenses (in shares)</link:label>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodSharesNewIssues_label_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodSharesNewIssues" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Issued During Period, Shares, New Issues</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesNewIssues" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodSharesNewIssues"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockIssuedDuringPeriodSharesNewIssues" xlink:to="lab_us-gaap_StockIssuedDuringPeriodSharesNewIssues" xlink:type="arc" order="1"/>
    <link:label id="lab_country_CN_e023485e-167c-482a-9c5f-bc011778fb6d_terseLabel_en-US" xlink:label="lab_country_CN" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">China</link:label>
    <link:label id="lab_country_CN_label_en-US" xlink:label="lab_country_CN" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">CHINA</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_country_CN" xlink:href="https://xbrl.sec.gov/country/2022/country-2022.xsd#country_CN"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_country_CN" xlink:to="lab_country_CN" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy_05be5e0c-cfd8-4f80-88db-fd625fa1ad79_terseLabel_en-US" xlink:label="lab_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill</link:label>
    <link:label id="lab_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy_label_en-US" xlink:label="lab_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill and Intangible Assets, Goodwill, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:to="lab_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedTranslationAdjustmentMember_41b5d4bb-f698-469c-b125-966b4f7fbdb9_terseLabel_en-US" xlink:label="lab_us-gaap_AccumulatedTranslationAdjustmentMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign Currency Translation Adjustments</link:label>
    <link:label id="lab_us-gaap_AccumulatedTranslationAdjustmentMember_label_en-US" xlink:label="lab_us-gaap_AccumulatedTranslationAdjustmentMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Foreign Currency Adjustment Attributable to Parent [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedTranslationAdjustmentMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedTranslationAdjustmentMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccumulatedTranslationAdjustmentMember" xlink:to="lab_us-gaap_AccumulatedTranslationAdjustmentMember" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ProductWarrantyPeriod_e6c8e1b9-76ca-4160-beb5-8368137c8e09_terseLabel_en-US" xlink:label="lab_calx_ProductWarrantyPeriod" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product warranty period</link:label>
    <link:label id="lab_calx_ProductWarrantyPeriod_label_en-US" xlink:label="lab_calx_ProductWarrantyPeriod" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product Warranty Period</link:label>
    <link:label id="lab_calx_ProductWarrantyPeriod_documentation_en-US" xlink:label="lab_calx_ProductWarrantyPeriod" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Represents the general warranty period for the Company's hardware products from the date of shipment.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ProductWarrantyPeriod" xlink:href="calx-20221231.xsd#calx_ProductWarrantyPeriod"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ProductWarrantyPeriod" xlink:to="lab_calx_ProductWarrantyPeriod" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityAddressCityOrTown_514dfb82-9cfb-4be4-b5da-4f4fcc1a12e7_terseLabel_en-US" xlink:label="lab_dei_EntityAddressCityOrTown" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, City or Town</link:label>
    <link:label id="lab_dei_EntityAddressCityOrTown_label_en-US" xlink:label="lab_dei_EntityAddressCityOrTown" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, City or Town</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressCityOrTown" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityAddressCityOrTown"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityAddressCityOrTown" xlink:to="lab_dei_EntityAddressCityOrTown" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingExpensesAbstract_7b7ccef7-ef52-4300-920d-c96a34dd6b0e_verboseLabel_en-US" xlink:label="lab_us-gaap_OperatingExpensesAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating expenses:</link:label>
    <link:label id="lab_us-gaap_OperatingExpensesAbstract_label_en-US" xlink:label="lab_us-gaap_OperatingExpensesAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Expenses [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingExpensesAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingExpensesAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingExpensesAbstract" xlink:to="lab_us-gaap_OperatingExpensesAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards_ddb2009c-aeb0-4785-a993-eb5bcbfc5e89_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net operating loss carryforwards</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Operating Loss Carryforwards</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwards"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:to="lab_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_MinimumMember_790add4d-4478-43d1-91d5-da0962a10096_terseLabel_en-US" xlink:label="lab_srt_MinimumMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Minimum</link:label>
    <link:label id="lab_srt_MinimumMember_label_en-US" xlink:label="lab_srt_MinimumMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Minimum [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_MinimumMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_MinimumMember" xlink:to="lab_srt_MinimumMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StatementOfFinancialPositionAbstract_4420cfaa-99c7-4dec-920b-64d2f8154e0f_terseLabel_en-US" xlink:label="lab_us-gaap_StatementOfFinancialPositionAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement of Financial Position [Abstract]</link:label>
    <link:label id="lab_us-gaap_StatementOfFinancialPositionAbstract_label_en-US" xlink:label="lab_us-gaap_StatementOfFinancialPositionAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement of Financial Position [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfFinancialPositionAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementOfFinancialPositionAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract" xlink:to="lab_us-gaap_StatementOfFinancialPositionAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityEmergingGrowthCompany_4a3195b9-753c-4449-a7bd-be21a4441c09_terseLabel_en-US" xlink:label="lab_dei_EntityEmergingGrowthCompany" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Emerging Growth Company</link:label>
    <link:label id="lab_dei_EntityEmergingGrowthCompany_label_en-US" xlink:label="lab_dei_EntityEmergingGrowthCompany" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Emerging Growth Company</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityEmergingGrowthCompany" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityEmergingGrowthCompany"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityEmergingGrowthCompany" xlink:to="lab_dei_EntityEmergingGrowthCompany" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockParOrStatedValuePerShare_df6557cb-6aad-42de-8648-562e883004f4_verboseLabel_en-US" xlink:label="lab_us-gaap_CommonStockParOrStatedValuePerShare" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common stock, par value (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_CommonStockParOrStatedValuePerShare_label_en-US" xlink:label="lab_us-gaap_CommonStockParOrStatedValuePerShare" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock, Par or Stated Value Per Share</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockParOrStatedValuePerShare" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockParOrStatedValuePerShare"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockParOrStatedValuePerShare" xlink:to="lab_us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InventoryRawMaterialsNetOfReserves_5945f259-1b78-4eb2-bd86-ca6b9e70eb7a_verboseLabel_en-US" xlink:label="lab_us-gaap_InventoryRawMaterialsNetOfReserves" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Raw materials</link:label>
    <link:label id="lab_us-gaap_InventoryRawMaterialsNetOfReserves_label_en-US" xlink:label="lab_us-gaap_InventoryRawMaterialsNetOfReserves" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory, Raw Materials, Net of Reserves</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryRawMaterialsNetOfReserves" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InventoryRawMaterialsNetOfReserves"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InventoryRawMaterialsNetOfReserves" xlink:to="lab_us-gaap_InventoryRawMaterialsNetOfReserves" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss_dc986584-c699-4372-af82-e1d28f225ff4_terseLabel_en-US" xlink:label="lab_calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net operating loss expiration / attribute expiration</link:label>
    <link:label id="lab_calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss_label_en-US" xlink:label="lab_calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Expiration Of Operating Income (Loss)</link:label>
    <link:label id="lab_calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss_documentation_en-US" xlink:label="lab_calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Expiration Of Operating Income (Loss)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss" xlink:href="calx-20221231.xsd#calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss" xlink:to="lab_calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_ValuationAndQualifyingAccountsDisclosureTable_429c5464-986a-4e5d-971e-6a881c19664e_terseLabel_en-US" xlink:label="lab_srt_ValuationAndQualifyingAccountsDisclosureTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Table]</link:label>
    <link:label id="lab_srt_ValuationAndQualifyingAccountsDisclosureTable_label_en-US" xlink:label="lab_srt_ValuationAndQualifyingAccountsDisclosureTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureTable" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ValuationAndQualifyingAccountsDisclosureTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureTable" xlink:to="lab_srt_ValuationAndQualifyingAccountsDisclosureTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_8c7338bb-90f0-42db-b7d7-48e05d37e683_terseLabel_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingenciesDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commitments and Contingencies Disclosure [Abstract]</link:label>
    <link:label id="lab_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_label_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingenciesDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commitments and Contingencies Disclosure [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommitmentsAndContingenciesDisclosureAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract" xlink:to="lab_us-gaap_CommitmentsAndContingenciesDisclosureAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_TreasuryStockCommonMember_084f9fb7-6b3a-4dc4-93d1-e1a5160522af_terseLabel_en-US" xlink:label="lab_us-gaap_TreasuryStockCommonMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Treasury Stock</link:label>
    <link:label id="lab_us-gaap_TreasuryStockCommonMember_label_en-US" xlink:label="lab_us-gaap_TreasuryStockCommonMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Treasury Stock, Common [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TreasuryStockCommonMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TreasuryStockCommonMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TreasuryStockCommonMember" xlink:to="lab_us-gaap_TreasuryStockCommonMember" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_AuditorName_5bd607ac-4667-40f9-b820-0b44e06619e1_terseLabel_en-US" xlink:label="lab_dei_AuditorName" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Auditor Name</link:label>
    <link:label id="lab_dei_AuditorName_label_en-US" xlink:label="lab_dei_AuditorName" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Auditor Name</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AuditorName" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_AuditorName"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_AuditorName" xlink:to="lab_dei_AuditorName" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueDisclosuresTextBlock_a497bef0-197a-4e74-af8b-5e76022634ce_verboseLabel_en-US" xlink:label="lab_us-gaap_FairValueDisclosuresTextBlock" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Measurements</link:label>
    <link:label id="lab_us-gaap_FairValueDisclosuresTextBlock_label_en-US" xlink:label="lab_us-gaap_FairValueDisclosuresTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Disclosures [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueDisclosuresTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueDisclosuresTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueDisclosuresTextBlock" xlink:to="lab_us-gaap_FairValueDisclosuresTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLossCarryforwards_11f7dd0c-bed9-499a-a6a1-46adbc469c66_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLossCarryforwards" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating loss carryforward</link:label>
    <link:label id="lab_us-gaap_OperatingLossCarryforwards_label_en-US" xlink:label="lab_us-gaap_OperatingLossCarryforwards" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Loss Carryforwards</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLossCarryforwards" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLossCarryforwards"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLossCarryforwards" xlink:to="lab_us-gaap_OperatingLossCarryforwards" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_TradingSymbol_e3a42638-9187-45e4-9f30-21f804a9daf0_terseLabel_en-US" xlink:label="lab_dei_TradingSymbol" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Trading Symbol</link:label>
    <link:label id="lab_dei_TradingSymbol_label_en-US" xlink:label="lab_dei_TradingSymbol" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Trading Symbol</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_TradingSymbol" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_TradingSymbol"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_TradingSymbol" xlink:to="lab_dei_TradingSymbol" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityFileNumber_9023d6fc-5a48-4b15-9916-a1333df20814_terseLabel_en-US" xlink:label="lab_dei_EntityFileNumber" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity File Number</link:label>
    <link:label id="lab_dei_EntityFileNumber_label_en-US" xlink:label="lab_dei_EntityFileNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity File Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityFileNumber" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityFileNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityFileNumber" xlink:to="lab_dei_EntityFileNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch_ab48893b-30c3-4c1e-a1f2-994bee8a8f79_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">R&amp;D tax credits</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Tax Credit, Research, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_f9f4123e-a13c-4240-9600-a85f47197761_terseLabel_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Other Comprehensive Income (Loss) [Line Items]</link:label>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_label_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Other Comprehensive Income (Loss) [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems" xlink:to="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_MunicipalNotesMember_dc5b9960-1757-4e0b-844a-46fdd3f64c3f_terseLabel_en-US" xlink:label="lab_us-gaap_MunicipalNotesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Municipal securities</link:label>
    <link:label id="lab_us-gaap_MunicipalNotesMember_label_en-US" xlink:label="lab_us-gaap_MunicipalNotesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Municipal Notes [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalNotesMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MunicipalNotesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_MunicipalNotesMember" xlink:to="lab_us-gaap_MunicipalNotesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ContractWithCustomerLiabilityNoncurrent_3aa344c5-e098-4b31-8934-76b36c8c2761_terseLabel_en-US" xlink:label="lab_us-gaap_ContractWithCustomerLiabilityNoncurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Long-term portion of deferred revenue</link:label>
    <link:label id="lab_us-gaap_ContractWithCustomerLiabilityNoncurrent_label_en-US" xlink:label="lab_us-gaap_ContractWithCustomerLiabilityNoncurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract with Customer, Liability, Noncurrent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityNoncurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ContractWithCustomerLiabilityNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ContractWithCustomerLiabilityNoncurrent" xlink:to="lab_us-gaap_ContractWithCustomerLiabilityNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ResearchAndDevelopmentExpense_22a47d97-6d84-4279-b442-e19dad2d2df1_verboseLabel_en-US" xlink:label="lab_us-gaap_ResearchAndDevelopmentExpense" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Research and development</link:label>
    <link:label id="lab_us-gaap_ResearchAndDevelopmentExpense_label_en-US" xlink:label="lab_us-gaap_ResearchAndDevelopmentExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Research and Development Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ResearchAndDevelopmentExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ResearchAndDevelopmentExpense" xlink:to="lab_us-gaap_ResearchAndDevelopmentExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions_547b54a1-16bc-46e5-8915-469a80fed69e_terseLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Additions for tax positions related to prior year</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions_label_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits, Increase Resulting from Prior Period Tax Positions</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:to="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EquipmentMember_9f6c8bac-3618-438e-9b2d-5fbb9a225793_terseLabel_en-US" xlink:label="lab_us-gaap_EquipmentMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Test Equipment</link:label>
    <link:label id="lab_us-gaap_EquipmentMember_4732c191-c1e0-40c4-9b76-fd45890e4c0e_verboseLabel_en-US" xlink:label="lab_us-gaap_EquipmentMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Test equipment</link:label>
    <link:label id="lab_us-gaap_EquipmentMember_label_en-US" xlink:label="lab_us-gaap_EquipmentMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Equipment [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquipmentMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquipmentMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EquipmentMember" xlink:to="lab_us-gaap_EquipmentMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_b60b63b3-dd68-4ec9-b70b-3058d23665b6_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign</link:label>
    <link:label id="lab_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Foreign Income Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:to="lab_us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod_02d11298-4942-4523-a1c2-cb6214815900_terseLabel_en-US" xlink:label="lab_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Offering period</link:label>
    <link:label id="lab_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod_label_en-US" xlink:label="lab_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price of Common Stock, Offering Period</link:label>
    <link:label id="lab_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod_documentation_en-US" xlink:label="lab_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price of Common Stock, Offering Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod" xlink:href="calx-20221231.xsd#calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod" xlink:to="lab_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_TitleOfIndividualAxis_4a417b10-31b9-45e1-8457-6d85e2adf110_terseLabel_en-US" xlink:label="lab_srt_TitleOfIndividualAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Title of Individual [Axis]</link:label>
    <link:label id="lab_srt_TitleOfIndividualAxis_label_en-US" xlink:label="lab_srt_TitleOfIndividualAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Title of Individual [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_TitleOfIndividualAxis" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_TitleOfIndividualAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_TitleOfIndividualAxis" xlink:to="lab_srt_TitleOfIndividualAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateContinuingOperations_8b7031ce-9a55-4a13-9f19-1516e58b0dee_totalLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateContinuingOperations_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProceedsFromLinesOfCredit_8d5243e6-b45e-4387-8418-dcfcea6a5dc5_terseLabel_en-US" xlink:label="lab_us-gaap_ProceedsFromLinesOfCredit" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Proceeds from line of credit</link:label>
    <link:label id="lab_us-gaap_ProceedsFromLinesOfCredit_label_en-US" xlink:label="lab_us-gaap_ProceedsFromLinesOfCredit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Proceeds from Lines of Credit</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromLinesOfCredit" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProceedsFromLinesOfCredit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProceedsFromLinesOfCredit" xlink:to="lab_us-gaap_ProceedsFromLinesOfCredit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskByBenchmarkAxis_4bc4fd8a-503d-4ff4-897a-5035746ce09c_terseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Benchmark [Axis]</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskByBenchmarkAxis_label_en-US" xlink:label="lab_us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Benchmark [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="lab_us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber_1f85c50d-0f71-4776-aac8-c251b0090638_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options vested and expected to vest (in shares)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested and Expected to Vest, Outstanding, Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UseOfEstimates_02bd4587-124d-407b-872b-def9057daaea_terseLabel_en-US" xlink:label="lab_us-gaap_UseOfEstimates" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Use of Estimates</link:label>
    <link:label id="lab_us-gaap_UseOfEstimates_label_en-US" xlink:label="lab_us-gaap_UseOfEstimates" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Use of Estimates, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UseOfEstimates" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UseOfEstimates"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UseOfEstimates" xlink:to="lab_us-gaap_UseOfEstimates" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent_fc0f80e1-0b9b-4504-a7e1-7750adf6482d_terseLabel_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Bookings target achievement performance threshold, percent</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent_label_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Bookings, Target Achievement Performance Threshold, Percent</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent_documentation_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Bookings, Target Achievement Performance Threshold, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent" xlink:to="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInAccountsPayable_243e652f-21f8-42d5-8dc7-46bcc633f8f6_verboseLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInAccountsPayable" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts payable</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInAccountsPayable_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInAccountsPayable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Accounts Payable</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsPayable" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInAccountsPayable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInAccountsPayable" xlink:to="lab_us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskPercentage1_32c47e6f-21b5-48c6-a174-0540b5cc453e_terseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskPercentage1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration of credit risk, percentage</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskPercentage1_label_en-US" xlink:label="lab_us-gaap_ConcentrationRiskPercentage1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk, Percentage</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskPercentage1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskPercentage1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConcentrationRiskPercentage1" xlink:to="lab_us-gaap_ConcentrationRiskPercentage1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized_9496b198-b336-4f99-8a4d-388d8c8004e1_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Number of additional shares authorized (in shares)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Number of Additional Shares Authorized</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CapitalizedContractCostAmortizationPeriod_a8bc47a5-b207-4b60-af92-cfee7135f3d6_terseLabel_en-US" xlink:label="lab_us-gaap_CapitalizedContractCostAmortizationPeriod" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Capitalized contract cost, amortization period</link:label>
    <link:label id="lab_us-gaap_CapitalizedContractCostAmortizationPeriod_label_en-US" xlink:label="lab_us-gaap_CapitalizedContractCostAmortizationPeriod" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Capitalized Contract Cost, Amortization Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CapitalizedContractCostAmortizationPeriod" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CapitalizedContractCostAmortizationPeriod"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CapitalizedContractCostAmortizationPeriod" xlink:to="lab_us-gaap_CapitalizedContractCostAmortizationPeriod" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProductWarrantyAccrual_fa1ed2e9-5ad0-4911-9834-ebf4c3a25c93_periodStartLabel_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrual" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance at beginning of year</link:label>
    <link:label id="lab_us-gaap_ProductWarrantyAccrual_a55b7507-e6e3-4353-95cc-a914c9868ea5_periodEndLabel_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrual" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance at end of year</link:label>
    <link:label id="lab_us-gaap_ProductWarrantyAccrual_label_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrual" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Standard and Extended Product Warranty Accrual</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrual" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProductWarrantyAccrual"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProductWarrantyAccrual" xlink:to="lab_us-gaap_ProductWarrantyAccrual" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InvestmentIncomeNet_7577d429-7fb1-49be-bb1a-5fcc9150d3c6_verboseLabel_en-US" xlink:label="lab_us-gaap_InvestmentIncomeNet" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Interest income (expense), net</link:label>
    <link:label id="lab_us-gaap_InvestmentIncomeNet_label_en-US" xlink:label="lab_us-gaap_InvestmentIncomeNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Investment Income, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentIncomeNet" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InvestmentIncomeNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InvestmentIncomeNet" xlink:to="lab_us-gaap_InvestmentIncomeNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxDisclosureTextBlock_6947eaf5-45ac-4f0d-b8a4-a89b23fe8eed_verboseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Taxes</link:label>
    <link:label id="lab_us-gaap_IncomeTaxDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_IncomeTaxDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxDisclosureTextBlock" xlink:to="lab_us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent_b885be7c-699d-4118-a8ef-a891bdd8d4f0_terseLabel_en-US" xlink:label="lab_calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract with customer, asset, expected to be billed, percent</link:label>
    <link:label id="lab_calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent_label_en-US" xlink:label="lab_calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract With Customer, Asset, Expected To Be Billed, Year One, Percent</link:label>
    <link:label id="lab_calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent_documentation_en-US" xlink:label="lab_calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract With Customer, Asset, Expected To Be Billed, Year One, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent" xlink:href="calx-20221231.xsd#calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent" xlink:to="lab_calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_MiddleEastAndAfricaMember_8cbc1748-be2e-4ada-b3d9-6aa297480ddd_terseLabel_en-US" xlink:label="lab_calx_MiddleEastAndAfricaMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Middle East &amp; Africa</link:label>
    <link:label id="lab_calx_MiddleEastAndAfricaMember_label_en-US" xlink:label="lab_calx_MiddleEastAndAfricaMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Middle East And Africa [Member]</link:label>
    <link:label id="lab_calx_MiddleEastAndAfricaMember_documentation_en-US" xlink:label="lab_calx_MiddleEastAndAfricaMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Middle East And Africa</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_MiddleEastAndAfricaMember" xlink:href="calx-20221231.xsd#calx_MiddleEastAndAfricaMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_MiddleEastAndAfricaMember" xlink:to="lab_calx_MiddleEastAndAfricaMember" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_AccruedCustomerRebates_9fd497da-04ba-478f-8616-562d7283121a_terseLabel_en-US" xlink:label="lab_calx_AccruedCustomerRebates" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer advances or rebates</link:label>
    <link:label id="lab_calx_AccruedCustomerRebates_label_en-US" xlink:label="lab_calx_AccruedCustomerRebates" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Customer Rebates</link:label>
    <link:label id="lab_calx_AccruedCustomerRebates_documentation_en-US" xlink:label="lab_calx_AccruedCustomerRebates" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued customer rebates.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedCustomerRebates" xlink:href="calx-20221231.xsd#calx_AccruedCustomerRebates"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_AccruedCustomerRebates" xlink:to="lab_calx_AccruedCustomerRebates" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_07498278-b510-49ce-8028-0f8fc5bc523b_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">State</link:label>
    <link:label id="lab_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred State and Local Income Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:to="lab_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InventoryFinishedGoodsNetOfReserves_4ec61a3f-c71b-4ab1-8162-a2022c1ffe0d_verboseLabel_en-US" xlink:label="lab_us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finished goods</link:label>
    <link:label id="lab_us-gaap_InventoryFinishedGoodsNetOfReserves_label_en-US" xlink:label="lab_us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory, Finished Goods, Net of Reserves</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InventoryFinishedGoodsNetOfReserves"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:to="lab_us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InterestPaidNet_be1fd667-2b51-4d35-8741-c07f7da7da53_terseLabel_en-US" xlink:label="lab_us-gaap_InterestPaidNet" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Interest paid</link:label>
    <link:label id="lab_us-gaap_InterestPaidNet_label_en-US" xlink:label="lab_us-gaap_InterestPaidNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Interest Paid, Excluding Capitalized Interest, Operating Activities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InterestPaidNet" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InterestPaidNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InterestPaidNet" xlink:to="lab_us-gaap_InterestPaidNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EarningsPerShareBasic_188c6f45-095a-4f84-9bd3-d40982f101d6_terseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareBasic" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Basic (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareBasic_6d37ac52-3783-4885-9c77-00d224d3539e_verboseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareBasic" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Basic net income (loss) per common share (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareBasic_label_en-US" xlink:label="lab_us-gaap_EarningsPerShareBasic" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Earnings Per Share, Basic</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasic" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareBasic"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EarningsPerShareBasic" xlink:to="lab_us-gaap_EarningsPerShareBasic" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1_bbb63506-254c-47de-bbf3-12890a1aa2b5_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Award requisite service period</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Award Requisite Service Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_3b76324a-b4be-4949-ba16-75a21248429a_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2025</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, to be Paid, Year Three</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_71a9a8a5-66dc-41a4-85e3-676e0ae504c5_terseLabel_en-US" xlink:label="lab_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenues from External Customers and Long-Lived Assets [Line Items]</link:label>
    <link:label id="lab_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_label_en-US" xlink:label="lab_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenues from External Customers and Long-Lived Assets [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems" xlink:to="lab_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CapitalizedContractCostGross_0622ea2b-2582-499f-ad3d-1acc76d23db7_terseLabel_en-US" xlink:label="lab_us-gaap_CapitalizedContractCostGross" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Capitalized contract cost, gross</link:label>
    <link:label id="lab_us-gaap_CapitalizedContractCostGross_label_en-US" xlink:label="lab_us-gaap_CapitalizedContractCostGross" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Capitalized Contract Cost, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CapitalizedContractCostGross" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CapitalizedContractCostGross"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CapitalizedContractCostGross" xlink:to="lab_us-gaap_CapitalizedContractCostGross" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InventoryPolicyTextBlock_871f4033-dc77-4031-a518-69c1189a2049_terseLabel_en-US" xlink:label="lab_us-gaap_InventoryPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory Valuation and Supplier Purchase Commitments</link:label>
    <link:label id="lab_us-gaap_InventoryPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_InventoryPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InventoryPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InventoryPolicyTextBlock" xlink:to="lab_us-gaap_InventoryPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskTypeDomain_02acdafd-30a7-4de0-b4a9-1c2c6294636d_terseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskTypeDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Type [Domain]</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskTypeDomain_label_en-US" xlink:label="lab_us-gaap_ConcentrationRiskTypeDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Type [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTypeDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskTypeDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConcentrationRiskTypeDomain" xlink:to="lab_us-gaap_ConcentrationRiskTypeDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SellingAndMarketingExpense_f5f3344b-80d8-4036-8c04-9e8285966f86_verboseLabel_en-US" xlink:label="lab_us-gaap_SellingAndMarketingExpense" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sales and marketing</link:label>
    <link:label id="lab_us-gaap_SellingAndMarketingExpense_label_en-US" xlink:label="lab_us-gaap_SellingAndMarketingExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Selling and Marketing Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SellingAndMarketingExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SellingAndMarketingExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SellingAndMarketingExpense" xlink:to="lab_us-gaap_SellingAndMarketingExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockholdersEquity_6e124d66-9232-430f-8dc1-66492f393153_totalLabel_en-US" xlink:label="lab_us-gaap_StockholdersEquity" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total stockholders&#8217; equity</link:label>
    <link:label id="lab_us-gaap_StockholdersEquity_9edf6424-2e70-4b7b-86ff-27a851a69ec7_periodStartLabel_en-US" xlink:label="lab_us-gaap_StockholdersEquity" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance at beginning of period</link:label>
    <link:label id="lab_us-gaap_StockholdersEquity_e80e44d4-791b-4457-abb6-52a84f718de4_periodEndLabel_en-US" xlink:label="lab_us-gaap_StockholdersEquity" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance at end of period</link:label>
    <link:label id="lab_us-gaap_StockholdersEquity_label_en-US" xlink:label="lab_us-gaap_StockholdersEquity" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stockholders' Equity Attributable to Parent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockholdersEquity"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockholdersEquity" xlink:to="lab_us-gaap_StockholdersEquity" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_TaxCreditCarryforwardAmount_122a407b-44f6-4dce-ab2a-1954dd3f10db_terseLabel_en-US" xlink:label="lab_us-gaap_TaxCreditCarryforwardAmount" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Tax credit carryforwards</link:label>
    <link:label id="lab_us-gaap_TaxCreditCarryforwardAmount_2ce85116-740d-42c5-80b1-fcf2fb1f0e91_verboseLabel_en-US" xlink:label="lab_us-gaap_TaxCreditCarryforwardAmount" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Research and development credits</link:label>
    <link:label id="lab_us-gaap_TaxCreditCarryforwardAmount_label_en-US" xlink:label="lab_us-gaap_TaxCreditCarryforwardAmount" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Tax Credit Carryforward, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardAmount" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TaxCreditCarryforwardAmount"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TaxCreditCarryforwardAmount" xlink:to="lab_us-gaap_TaxCreditCarryforwardAmount" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_VestingDomain_6f7477ea-cab1-4fd2-b85a-69927385bca2_terseLabel_en-US" xlink:label="lab_us-gaap_VestingDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Vesting [Domain]</link:label>
    <link:label id="lab_us-gaap_VestingDomain_label_en-US" xlink:label="lab_us-gaap_VestingDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Vesting [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_VestingDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_VestingDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_VestingDomain" xlink:to="lab_us-gaap_VestingDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityInteractiveDataCurrent_0f4d915e-c856-42b9-b854-0b016d9dc83e_terseLabel_en-US" xlink:label="lab_dei_EntityInteractiveDataCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Interactive Data Current</link:label>
    <link:label id="lab_dei_EntityInteractiveDataCurrent_label_en-US" xlink:label="lab_dei_EntityInteractiveDataCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Interactive Data Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityInteractiveDataCurrent" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityInteractiveDataCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityInteractiveDataCurrent" xlink:to="lab_dei_EntityInteractiveDataCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CapitalizedContractCostAmortization_985be076-6fcb-49bb-bd37-c49376758178_terseLabel_en-US" xlink:label="lab_us-gaap_CapitalizedContractCostAmortization" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Capitalized contract cost, amortization</link:label>
    <link:label id="lab_us-gaap_CapitalizedContractCostAmortization_label_en-US" xlink:label="lab_us-gaap_CapitalizedContractCostAmortization" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Capitalized Contract Cost, Amortization</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CapitalizedContractCostAmortization" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CapitalizedContractCostAmortization"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CapitalizedContractCostAmortization" xlink:to="lab_us-gaap_CapitalizedContractCostAmortization" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction_940391b5-badd-4a6b-8ca9-1f303496e0ba_terseLabel_en-US" xlink:label="lab_us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares sold in offering (in shares)</link:label>
    <link:label id="lab_us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction_label_en-US" xlink:label="lab_us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sale of Stock, Number of Shares Issued in Transaction</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction" xlink:to="lab_us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths_99282c1b-8f53-4fc9-8e46-2bbe8ca81247_terseLabel_en-US" xlink:label="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2023</link:label>
    <link:label id="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths_label_en-US" xlink:label="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessor, Operating Lease, Payment to be Received, Year One</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths" xlink:to="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_907a1175-bbea-4989-9de8-5f5cf0631792_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Property, Plant and Equipment [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfPropertyPlantAndEquipmentTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable" xlink:to="lab_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareholdersEquityAndShareBasedPaymentsTextBlock_3744ab36-84e4-491c-acd6-8154d4581aff_verboseLabel_en-US" xlink:label="lab_us-gaap_ShareholdersEquityAndShareBasedPaymentsTextBlock" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stockholders' Equity</link:label>
    <link:label id="lab_us-gaap_ShareholdersEquityAndShareBasedPaymentsTextBlock_label_en-US" xlink:label="lab_us-gaap_ShareholdersEquityAndShareBasedPaymentsTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shareholders' Equity and Share-Based Payments [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareholdersEquityAndShareBasedPaymentsTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareholdersEquityAndShareBasedPaymentsTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareholdersEquityAndShareBasedPaymentsTextBlock" xlink:to="lab_us-gaap_ShareholdersEquityAndShareBasedPaymentsTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract_6fd6a626-1408-4de4-bb3e-638ac0e469ae_verboseLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Changes in operating assets and liabilities:</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Operating Capital [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="lab_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_country_IN_071c3299-e6e1-42ed-a38a-856de6dc93f2_terseLabel_en-US" xlink:label="lab_country_IN" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">India</link:label>
    <link:label id="lab_country_IN_label_en-US" xlink:label="lab_country_IN" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">INDIA</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_country_IN" xlink:href="https://xbrl.sec.gov/country/2022/country-2022.xsd#country_IN"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_country_IN" xlink:to="lab_country_IN" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetIncomeLossAbstract_ee44c3fb-b44b-408d-8921-cc0c92997641_verboseLabel_en-US" xlink:label="lab_us-gaap_NetIncomeLossAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Numerator:</link:label>
    <link:label id="lab_us-gaap_NetIncomeLossAbstract_label_en-US" xlink:label="lab_us-gaap_NetIncomeLossAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Income (Loss) Attributable to Parent [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLossAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetIncomeLossAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NetIncomeLossAbstract" xlink:to="lab_us-gaap_NetIncomeLossAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherAssetsMiscellaneousNoncurrent_d3b6f141-e069-49b1-9e05-2c4553ffe843_terseLabel_en-US" xlink:label="lab_us-gaap_OtherAssetsMiscellaneousNoncurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other long-term assets</link:label>
    <link:label id="lab_us-gaap_OtherAssetsMiscellaneousNoncurrent_label_en-US" xlink:label="lab_us-gaap_OtherAssetsMiscellaneousNoncurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Assets, Miscellaneous, Noncurrent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAssetsMiscellaneousNoncurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherAssetsMiscellaneousNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherAssetsMiscellaneousNoncurrent" xlink:to="lab_us-gaap_OtherAssetsMiscellaneousNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_MoneyMarketFundsMember_6800b071-49af-45bd-8f05-8d47e0c489fa_terseLabel_en-US" xlink:label="lab_us-gaap_MoneyMarketFundsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Money market funds</link:label>
    <link:label id="lab_us-gaap_MoneyMarketFundsMember_label_en-US" xlink:label="lab_us-gaap_MoneyMarketFundsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Money Market Funds [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MoneyMarketFundsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MoneyMarketFundsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_MoneyMarketFundsMember" xlink:to="lab_us-gaap_MoneyMarketFundsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RetainedEarningsMember_06256493-029c-4db0-8b3e-612f202ee05c_terseLabel_en-US" xlink:label="lab_us-gaap_RetainedEarningsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Deficit</link:label>
    <link:label id="lab_us-gaap_RetainedEarningsMember_label_en-US" xlink:label="lab_us-gaap_RetainedEarningsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Retained Earnings [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RetainedEarningsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RetainedEarningsMember" xlink:to="lab_us-gaap_RetainedEarningsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_e0cc9f87-2a46-4cb3-9422-c3b43eaa4e1d_terseLabel_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized stock-based compensation expense</link:label>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_label_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Payment Arrangement, Nonvested Award, Option, Cost Not yet Recognized, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions" xlink:to="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsLineItems_a91f8033-4c49-4523-8061-e23059cc94fa_terseLabel_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and Cash Equivalents [Line Items]</link:label>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsLineItems_label_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and Cash Equivalents [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CashAndCashEquivalentsLineItems" xlink:to="lab_us-gaap_CashAndCashEquivalentsLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears_edd8f0ff-baa0-4b23-bb77-d5d0adb1a1f7_terseLabel_en-US" xlink:label="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2025</link:label>
    <link:label id="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears_label_en-US" xlink:label="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessor, Operating Lease, Payment to be Received, Year Three</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears" xlink:to="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockMember_c4c4a900-0bee-4ebb-9e67-588da2ee8dc2_terseLabel_en-US" xlink:label="lab_us-gaap_CommonStockMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock</link:label>
    <link:label id="lab_us-gaap_CommonStockMember_label_en-US" xlink:label="lab_us-gaap_CommonStockMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockMember" xlink:to="lab_us-gaap_CommonStockMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate_e2a9d557-92c6-46ad-8882-ddef6f0828f8_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum employee subscription rate</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Maximum Employee Subscription Rate</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_b1fb7835-fc74-41c3-b8e1-bcec429e2bb8_totalLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total other comprehensive income (loss), net of tax</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_9ef3fe52-2af8-4114-92dc-e2a64f97378c_terseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other comprehensive income (loss)</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Comprehensive Income (Loss), Net of Tax, Portion Attributable to Parent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:to="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation_5854d144-58ed-4814-a4c7-04148c335db9_terseLabel_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Issuance of common stock under equity incentive plans, net of forfeitures</link:label>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation_label_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares Issued, Value, Share-Based Payment Arrangement, after Forfeiture</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation" xlink:to="lab_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_6fcbd892-1148-41d2-be97-7cecad3fd958_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares available for future grant</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_b924f678-4644-4330-8f0c-21ea353ff62e_verboseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares available for future grant under 2019 Plan (in shares)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Number of Shares Available for Grant</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxPolicyTextBlock_8d172dcf-a296-4e1f-9eb5-269e27a481b3_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Taxes</link:label>
    <link:label id="lab_us-gaap_IncomeTaxPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_IncomeTaxPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxPolicyTextBlock" xlink:to="lab_us-gaap_IncomeTaxPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StatementTable_24c06296-542e-4ea3-8b11-246c5cad2a91_terseLabel_en-US" xlink:label="lab_us-gaap_StatementTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement [Table]</link:label>
    <link:label id="lab_us-gaap_StatementTable_label_en-US" xlink:label="lab_us-gaap_StatementTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementTable" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StatementTable" xlink:to="lab_us-gaap_StatementTable" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition_7f1e82c5-a6f3-4bd7-b07a-8b776fbe625b_terseLabel_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Awards percentage of total subject to service condition</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition_label_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Awards Percentage Of Total Subject To Service Condition</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition_documentation_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Awards Percentage Of Total Subject To Service Condition</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition" xlink:to="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FurnitureAndFixturesMember_4933b97d-26be-4692-8865-e7382b57d647_terseLabel_en-US" xlink:label="lab_us-gaap_FurnitureAndFixturesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Furniture and Fixtures</link:label>
    <link:label id="lab_us-gaap_FurnitureAndFixturesMember_95dcfb98-d58f-466a-b321-b7127af833b6_verboseLabel_en-US" xlink:label="lab_us-gaap_FurnitureAndFixturesMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Furniture and fixtures</link:label>
    <link:label id="lab_us-gaap_FurnitureAndFixturesMember_label_en-US" xlink:label="lab_us-gaap_FurnitureAndFixturesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Furniture and Fixtures [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FurnitureAndFixturesMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FurnitureAndFixturesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FurnitureAndFixturesMember" xlink:to="lab_us-gaap_FurnitureAndFixturesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AssetsCurrentAbstract_e49c1292-017a-488a-b34c-f166ea5e2bba_verboseLabel_en-US" xlink:label="lab_us-gaap_AssetsCurrentAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current assets:</link:label>
    <link:label id="lab_us-gaap_AssetsCurrentAbstract_label_en-US" xlink:label="lab_us-gaap_AssetsCurrentAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Assets, Current [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrentAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AssetsCurrentAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AssetsCurrentAbstract" xlink:to="lab_us-gaap_AssetsCurrentAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseLiabilityNoncurrent_da0727f6-5151-4d8e-b2e0-44860ee7cfcc_verboseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating leases</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseLiabilityNoncurrent_13f0635b-b7ce-446b-8c09-fc6d24e12784_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating leases</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseLiabilityNoncurrent_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Liability, Noncurrent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:to="lab_us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_SoftwareMember_226f0666-84bf-4bff-b94b-8a1d18db9a0f_terseLabel_en-US" xlink:label="lab_calx_SoftwareMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Software</link:label>
    <link:label id="lab_calx_SoftwareMember_label_en-US" xlink:label="lab_calx_SoftwareMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Software [Member]</link:label>
    <link:label id="lab_calx_SoftwareMember_documentation_en-US" xlink:label="lab_calx_SoftwareMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Software</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SoftwareMember" xlink:href="calx-20221231.xsd#calx_SoftwareMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_SoftwareMember" xlink:to="lab_calx_SoftwareMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DefinedContributionPlanCostRecognized_1e7f5c15-b0a0-48d9-9a26-edaec20b8bdc_terseLabel_en-US" xlink:label="lab_us-gaap_DefinedContributionPlanCostRecognized" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Company matching contributions, 401(K) Plan</link:label>
    <link:label id="lab_us-gaap_DefinedContributionPlanCostRecognized_label_en-US" xlink:label="lab_us-gaap_DefinedContributionPlanCostRecognized" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Defined Contribution Plan, Cost</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DefinedContributionPlanCostRecognized" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DefinedContributionPlanCostRecognized"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DefinedContributionPlanCostRecognized" xlink:to="lab_us-gaap_DefinedContributionPlanCostRecognized" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_RangeAxis_61908d88-ac2f-442c-a2b8-2ae5e7760158_terseLabel_en-US" xlink:label="lab_srt_RangeAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statistical Measurement [Axis]</link:label>
    <link:label id="lab_srt_RangeAxis_label_en-US" xlink:label="lab_srt_RangeAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statistical Measurement [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_RangeAxis" xlink:to="lab_srt_RangeAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LeaseholdImprovementsMember_3e1fb04e-01e7-402f-9558-0d6a99974879_verboseLabel_en-US" xlink:label="lab_us-gaap_LeaseholdImprovementsMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Leasehold improvements</link:label>
    <link:label id="lab_us-gaap_LeaseholdImprovementsMember_label_en-US" xlink:label="lab_us-gaap_LeaseholdImprovementsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Leasehold Improvements [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeaseholdImprovementsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LeaseholdImprovementsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LeaseholdImprovementsMember" xlink:to="lab_us-gaap_LeaseholdImprovementsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ChangeInCapitalExpendituresIncurredButNotYetPaid_25b727da-ac6d-4ba3-8cfc-4b25ca84c080_terseLabel_en-US" xlink:label="lab_calx_ChangeInCapitalExpendituresIncurredButNotYetPaid" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Changes in accounts payable and accrued liabilities related to purchases of property and equipment</link:label>
    <link:label id="lab_calx_ChangeInCapitalExpendituresIncurredButNotYetPaid_label_en-US" xlink:label="lab_calx_ChangeInCapitalExpendituresIncurredButNotYetPaid" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Change In Capital Expenditures Incurred But Not Yet Paid</link:label>
    <link:label id="lab_calx_ChangeInCapitalExpendituresIncurredButNotYetPaid_documentation_en-US" xlink:label="lab_calx_ChangeInCapitalExpendituresIncurredButNotYetPaid" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Change In Capital Expenditures Incurred But Not Yet Paid</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ChangeInCapitalExpendituresIncurredButNotYetPaid" xlink:href="calx-20221231.xsd#calx_ChangeInCapitalExpendituresIncurredButNotYetPaid"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ChangeInCapitalExpendituresIncurredButNotYetPaid" xlink:to="lab_calx_ChangeInCapitalExpendituresIncurredButNotYetPaid" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock_c9cfd259-5c1b-4c87-8ac7-65d133005e62_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue by Geographic Region</link:label>
    <link:label id="lab_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock_label_en-US" xlink:label="lab_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue from External Customers by Geographic Areas [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:to="lab_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RetainedEarningsAccumulatedDeficit_272983fc-dac1-485a-9a77-e2c8cac5e172_verboseLabel_en-US" xlink:label="lab_us-gaap_RetainedEarningsAccumulatedDeficit" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated deficit</link:label>
    <link:label id="lab_us-gaap_RetainedEarningsAccumulatedDeficit_label_en-US" xlink:label="lab_us-gaap_RetainedEarningsAccumulatedDeficit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Retained Earnings (Accumulated Deficit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsAccumulatedDeficit" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RetainedEarningsAccumulatedDeficit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RetainedEarningsAccumulatedDeficit" xlink:to="lab_us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_AmericasExUSMember_60b2a4bb-ad52-4dab-9b62-8a2732755e8a_terseLabel_en-US" xlink:label="lab_calx_AmericasExUSMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Europe</link:label>
    <link:label id="lab_calx_AmericasExUSMember_label_en-US" xlink:label="lab_calx_AmericasExUSMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Americas Ex U.S. [Member]</link:label>
    <link:label id="lab_calx_AmericasExUSMember_documentation_en-US" xlink:label="lab_calx_AmericasExUSMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Americas Ex U.S.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AmericasExUSMember" xlink:href="calx-20221231.xsd#calx_AmericasExUSMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_AmericasExUSMember" xlink:to="lab_calx_AmericasExUSMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward_ab2193c9-e412-4e3d-8c9b-8deb69c45034_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares purchased for award</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Shares Purchased for Award</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CashEquivalentsAtCarryingValue_121027f9-b674-4da9-ac35-edde1f579730_terseLabel_en-US" xlink:label="lab_us-gaap_CashEquivalentsAtCarryingValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash equivalents</link:label>
    <link:label id="lab_us-gaap_CashEquivalentsAtCarryingValue_label_en-US" xlink:label="lab_us-gaap_CashEquivalentsAtCarryingValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash Equivalents, at Carrying Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashEquivalentsAtCarryingValue" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashEquivalentsAtCarryingValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CashEquivalentsAtCarryingValue" xlink:to="lab_us-gaap_CashEquivalentsAtCarryingValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccountsReceivableNetCurrent_26066c7e-78e1-46e5-bc7c-8410ff154792_verboseLabel_en-US" xlink:label="lab_us-gaap_AccountsReceivableNetCurrent" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts receivable, net</link:label>
    <link:label id="lab_us-gaap_AccountsReceivableNetCurrent_dffafa12-4f36-4751-94cd-1292ff53ed60_totalLabel_en-US" xlink:label="lab_us-gaap_AccountsReceivableNetCurrent" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts receivable, net</link:label>
    <link:label id="lab_us-gaap_AccountsReceivableNetCurrent_label_en-US" xlink:label="lab_us-gaap_AccountsReceivableNetCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable, after Allowance for Credit Loss, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableNetCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsReceivableNetCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccountsReceivableNetCurrent" xlink:to="lab_us-gaap_AccountsReceivableNetCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_194cadac-622b-4126-98a3-ac078fe7f559_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Finite-Lived Intangible Assets [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Finite-Lived Intangible Assets [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable" xlink:to="lab_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PaymentsToAcquireMarketableSecurities_29dd83ea-3417-479a-a6e7-b06418789e48_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_PaymentsToAcquireMarketableSecurities" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Purchases of marketable securities</link:label>
    <link:label id="lab_us-gaap_PaymentsToAcquireMarketableSecurities_label_en-US" xlink:label="lab_us-gaap_PaymentsToAcquireMarketableSecurities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments to Acquire Marketable Securities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireMarketableSecurities" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PaymentsToAcquireMarketableSecurities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PaymentsToAcquireMarketableSecurities" xlink:to="lab_us-gaap_PaymentsToAcquireMarketableSecurities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StatementEquityComponentsAxis_69cd1386-44a5-40e4-957c-7cd2d501e69f_terseLabel_en-US" xlink:label="lab_us-gaap_StatementEquityComponentsAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Equity Components [Axis]</link:label>
    <link:label id="lab_us-gaap_StatementEquityComponentsAxis_label_en-US" xlink:label="lab_us-gaap_StatementEquityComponentsAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Equity Components [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementEquityComponentsAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementEquityComponentsAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StatementEquityComponentsAxis" xlink:to="lab_us-gaap_StatementEquityComponentsAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo_cede200e-de51-4639-a94e-3f5c4961631b_terseLabel_en-US" xlink:label="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-based compensation expense to be recognized two years after filing</link:label>
    <link:label id="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo_label_en-US" xlink:label="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized In Year Two</link:label>
    <link:label id="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo_documentation_en-US" xlink:label="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized In Year Two</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo" xlink:href="calx-20221231.xsd#calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo" xlink:to="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueMeasurementsRecurringMember_42cef0ab-fb40-49db-ab75-fdc1fd29a626_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueMeasurementsRecurringMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Recurring</link:label>
    <link:label id="lab_us-gaap_FairValueMeasurementsRecurringMember_label_en-US" xlink:label="lab_us-gaap_FairValueMeasurementsRecurringMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Recurring [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsRecurringMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueMeasurementsRecurringMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueMeasurementsRecurringMember" xlink:to="lab_us-gaap_FairValueMeasurementsRecurringMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice_5c58a418-ff6c-426e-a1ee-9e3e8f957b6c_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options exercisable (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Weighted Average Exercise Price</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_DocumentFiscalYearFocus_80fd0b0d-48d1-439f-90c4-ca495b2a50a2_terseLabel_en-US" xlink:label="lab_dei_DocumentFiscalYearFocus" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Fiscal Year Focus</link:label>
    <link:label id="lab_dei_DocumentFiscalYearFocus_label_en-US" xlink:label="lab_dei_DocumentFiscalYearFocus" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Fiscal Year Focus</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentFiscalYearFocus" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_DocumentFiscalYearFocus"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_DocumentFiscalYearFocus" xlink:to="lab_dei_DocumentFiscalYearFocus" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_b6bf6304-fe81-4925-8af9-e5379f5ccef8_verboseLabel_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating activities:</link:label>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_label_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Cash Provided by (Used in) Operating Activities [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="lab_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StatementLineItems_93fde4ac-3802-474b-b8a8-84b965e2850c_terseLabel_en-US" xlink:label="lab_us-gaap_StatementLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement [Line Items]</link:label>
    <link:label id="lab_us-gaap_StatementLineItems_label_en-US" xlink:label="lab_us-gaap_StatementLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StatementLineItems" xlink:to="lab_us-gaap_StatementLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis_d4b081d8-818a-4969-9fbd-fe6d8db930c7_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]</link:label>
    <link:label id="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis_label_en-US" xlink:label="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis" xlink:to="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NonoperatingIncomeExpense_8f374762-42fe-4590-8ff4-194dd536f3bd_totalLabel_en-US" xlink:label="lab_us-gaap_NonoperatingIncomeExpense" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total interest and other income (expense), net</link:label>
    <link:label id="lab_us-gaap_NonoperatingIncomeExpense_label_en-US" xlink:label="lab_us-gaap_NonoperatingIncomeExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Nonoperating Income (Expense)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NonoperatingIncomeExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NonoperatingIncomeExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NonoperatingIncomeExpense" xlink:to="lab_us-gaap_NonoperatingIncomeExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueByFairValueHierarchyLevelAxis_10470fcc-7dfd-400e-a9b6-3009fe3e49da_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Hierarchy and NAV [Axis]</link:label>
    <link:label id="lab_us-gaap_FairValueByFairValueHierarchyLevelAxis_label_en-US" xlink:label="lab_us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Hierarchy and NAV [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="lab_us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LossContingenciesTable_1cb9bfc3-01e9-4904-a5da-4b1a43fe1974_terseLabel_en-US" xlink:label="lab_us-gaap_LossContingenciesTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Commitments and Contingencies</link:label>
    <link:label id="lab_us-gaap_LossContingenciesTable_label_en-US" xlink:label="lab_us-gaap_LossContingenciesTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Loss Contingencies [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LossContingenciesTable" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LossContingenciesTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LossContingenciesTable" xlink:to="lab_us-gaap_LossContingenciesTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent_61a5cefc-9da9-405a-8936-ffbb0b96a17b_totalLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Amortized Cost</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-Sale, Amortized Cost, Excluding Accrued Interest, after Allowance for Credit Loss, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CurrentIncomeTaxExpenseBenefit_1e78b32a-fc37-43d3-9a80-dc37cba3c832_totalLabel_en-US" xlink:label="lab_us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current income tax</link:label>
    <link:label id="lab_us-gaap_CurrentIncomeTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current Income Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CurrentIncomeTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:to="lab_us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_56b2eeca-75e4-42bd-b35d-81c96cfbf1d6_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross Unrealized Losses</link:label>
    <link:label id="lab_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_label_en-US" xlink:label="lab_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-Sale, Accumulated Gross Unrealized Loss, before Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:to="lab_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseRightOfUseAsset_e049b1d2-d703-495e-b4a5-f57a22c5e362_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseRightOfUseAsset" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Right-of-use operating leases</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseRightOfUseAsset_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseRightOfUseAsset" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Right-of-Use Asset</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseRightOfUseAsset" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseRightOfUseAsset"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseRightOfUseAsset" xlink:to="lab_us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent_d9a09156-dc49-4542-8564-08aad2be849b_terseLabel_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares award weighting percent for target achievement performance threshold, percent</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent_label_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Shares Award Weighting Percent For Target Achievement Performance Threshold, Percent</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent_documentation_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Shares Award Weighting Percent For Target Achievement Performance Threshold, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent" xlink:to="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeMember_3feb7191-052e-4441-9676-955ccbf4fbde_terseLabel_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Other Comprehensive Loss</link:label>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeMember_68e9baa0-8dad-4dc7-9478-0c4509e26fbc_verboseLabel_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total</link:label>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeMember_label_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">AOCI Attributable to Parent [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:to="lab_us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ComprehensiveIncomeNoteTextBlock_d31f3479-6d7b-4424-927d-4e531e7e4cd8_terseLabel_en-US" xlink:label="lab_us-gaap_ComprehensiveIncomeNoteTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Other Comprehensive Loss</link:label>
    <link:label id="lab_us-gaap_ComprehensiveIncomeNoteTextBlock_label_en-US" xlink:label="lab_us-gaap_ComprehensiveIncomeNoteTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Comprehensive Income (Loss) Note [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComprehensiveIncomeNoteTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ComprehensiveIncomeNoteTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ComprehensiveIncomeNoteTextBlock" xlink:to="lab_us-gaap_ComprehensiveIncomeNoteTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_AuditorFirmId_847f1c0d-d1c2-4d6f-89da-dfc46b58a835_terseLabel_en-US" xlink:label="lab_dei_AuditorFirmId" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Auditor Firm ID</link:label>
    <link:label id="lab_dei_AuditorFirmId_label_en-US" xlink:label="lab_dei_AuditorFirmId" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Auditor Firm ID</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AuditorFirmId" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_AuditorFirmId"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_AuditorFirmId" xlink:to="lab_dei_AuditorFirmId" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice_006e3dce-1511-4adf-a33e-b3fff30172aa_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options vested and expected to vest (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested and Expected to Vest, Outstanding, Weighted Average Exercise Price</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_OtherStateMember_cf91502a-664c-439d-ad86-85ce7a5ef78c_terseLabel_en-US" xlink:label="lab_calx_OtherStateMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other State</link:label>
    <link:label id="lab_calx_OtherStateMember_label_en-US" xlink:label="lab_calx_OtherStateMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other State [Member]</link:label>
    <link:label id="lab_calx_OtherStateMember_documentation_en-US" xlink:label="lab_calx_OtherStateMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other State [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_OtherStateMember" xlink:href="calx-20221231.xsd#calx_OtherStateMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_OtherStateMember" xlink:to="lab_calx_OtherStateMember" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_DocumentTransitionReport_b2533227-daec-412c-b91e-15b1ad965063_terseLabel_en-US" xlink:label="lab_dei_DocumentTransitionReport" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Transition Report</link:label>
    <link:label id="lab_dei_DocumentTransitionReport_label_en-US" xlink:label="lab_dei_DocumentTransitionReport" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Transition Report</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentTransitionReport" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_DocumentTransitionReport"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_DocumentTransitionReport" xlink:to="lab_dei_DocumentTransitionReport" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_LocalPhoneNumber_2bc41c09-cf7e-46ff-9f28-d2fb8f8ca956_terseLabel_en-US" xlink:label="lab_dei_LocalPhoneNumber" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Local Phone Number</link:label>
    <link:label id="lab_dei_LocalPhoneNumber_label_en-US" xlink:label="lab_dei_LocalPhoneNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Local Phone Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_LocalPhoneNumber" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_LocalPhoneNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_LocalPhoneNumber" xlink:to="lab_dei_LocalPhoneNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccountsReceivableNetCurrentAbstract_01800e56-4024-42fc-b425-3ef053063b57_verboseLabel_en-US" xlink:label="lab_us-gaap_AccountsReceivableNetCurrentAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Summary of accounts receivable, net</link:label>
    <link:label id="lab_us-gaap_AccountsReceivableNetCurrentAbstract_label_en-US" xlink:label="lab_us-gaap_AccountsReceivableNetCurrentAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable, after Allowance for Credit Loss, Current [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableNetCurrentAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsReceivableNetCurrentAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccountsReceivableNetCurrentAbstract" xlink:to="lab_us-gaap_AccountsReceivableNetCurrentAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock_25dc3b0c-c57b-45d8-b5cc-6a4431d2c831_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Stock Options Activity</link:label>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Payment Arrangement, Option, Activity [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingIncomeLoss_b7b4ecab-0d49-4339-9ed2-c054253772cd_totalLabel_en-US" xlink:label="lab_us-gaap_OperatingIncomeLoss" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating income</link:label>
    <link:label id="lab_us-gaap_OperatingIncomeLoss_label_en-US" xlink:label="lab_us-gaap_OperatingIncomeLoss" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Income (Loss)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingIncomeLoss" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingIncomeLoss"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingIncomeLoss" xlink:to="lab_us-gaap_OperatingIncomeLoss" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInInventories_4d4e6e69-cbbb-4913-a405-d7563c085b68_negatedLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInInventories" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInInventories_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInInventories" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Inventories</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInInventories" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInInventories"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInInventories" xlink:to="lab_us-gaap_IncreaseDecreaseInInventories" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock_5a8a84e4-02bb-4efa-9f09-8ae02613d8f3_verboseLabel_en-US" xlink:label="lab_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Newly Adopted Accounting Standards and Recent Accounting Pronouncements Not Yet Adopted</link:label>
    <link:label id="lab_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">New Accounting Pronouncements, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:to="lab_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_66b75b49-d5e4-47b5-96de-50bb4589c7e9_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-based compensation</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Tax Deferred Expense, Compensation and Benefits, Share-Based Compensation Cost</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:to="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_81dd692a-8fc8-4070-8642-d0ef6da14414_negatedLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Prepaid expenses and other assets</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Prepaid Expense and Other Assets</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:to="lab_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StateAndLocalJurisdictionMember_08438083-a1e7-4ef3-9119-6ffb06192362_terseLabel_en-US" xlink:label="lab_us-gaap_StateAndLocalJurisdictionMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">State</link:label>
    <link:label id="lab_us-gaap_StateAndLocalJurisdictionMember_label_en-US" xlink:label="lab_us-gaap_StateAndLocalJurisdictionMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">State and Local Jurisdiction [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StateAndLocalJurisdictionMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StateAndLocalJurisdictionMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StateAndLocalJurisdictionMember" xlink:to="lab_us-gaap_StateAndLocalJurisdictionMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities_6972eea1-a73e-440c-bf76-38affec8379a_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accruals and reserves</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Tax Deferred Expense, Reserves and Accruals, Accrued Liabilities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:to="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockSharesOutstanding_6b06fa2f-0846-4191-aac7-e5ee3d2b9a38_verboseLabel_en-US" xlink:label="lab_us-gaap_CommonStockSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common stock, shares outstanding (in shares)</link:label>
    <link:label id="lab_us-gaap_CommonStockSharesOutstanding_6897145f-2274-4fc8-a0ea-9981cda5189c_periodStartLabel_en-US" xlink:label="lab_us-gaap_CommonStockSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Beginning balance, shares</link:label>
    <link:label id="lab_us-gaap_CommonStockSharesOutstanding_984f19c1-184d-4d31-a0c8-1837e7524211_periodEndLabel_en-US" xlink:label="lab_us-gaap_CommonStockSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Ending balance, shares</link:label>
    <link:label id="lab_us-gaap_CommonStockSharesOutstanding_label_en-US" xlink:label="lab_us-gaap_CommonStockSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock, Shares, Outstanding</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesOutstanding" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockSharesOutstanding"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockSharesOutstanding" xlink:to="lab_us-gaap_CommonStockSharesOutstanding" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_Goodwill_256bab40-5ce2-4183-86ea-6e31ffb1e2e8_verboseLabel_en-US" xlink:label="lab_us-gaap_Goodwill" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill</link:label>
    <link:label id="lab_us-gaap_Goodwill_label_en-US" xlink:label="lab_us-gaap_Goodwill" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Goodwill"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_Goodwill" xlink:to="lab_us-gaap_Goodwill" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BalanceSheetRelatedDisclosuresAbstract_1b4bce54-965d-4c0a-adb9-98d3ef103e1b_terseLabel_en-US" xlink:label="lab_us-gaap_BalanceSheetRelatedDisclosuresAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance Sheet Related Disclosures [Abstract]</link:label>
    <link:label id="lab_us-gaap_BalanceSheetRelatedDisclosuresAbstract_label_en-US" xlink:label="lab_us-gaap_BalanceSheetRelatedDisclosuresAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance Sheet Related Disclosures [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetRelatedDisclosuresAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract" xlink:to="lab_us-gaap_BalanceSheetRelatedDisclosuresAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentByTypeAxis_57db44c9-789c-499d-a5b3-4a998dd7b03c_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment, Type [Axis]</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentByTypeAxis_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Long-Lived Tangible Asset [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet_db4f2b60-6609-48b4-b278-62ea8fa46e63_terseLabel_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Number of shares granted if target achievement performance threshold not met (in shares)</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet_label_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Number Of Shares Granted If Target Achievement Performance Threshold Not Met</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet_documentation_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Number Of Shares Granted If Target Achievement Performance Threshold Not Met</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet" xlink:to="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_CaliforniaStateMember_0a778f1e-9ff2-4681-bfa9-256b06788293_terseLabel_en-US" xlink:label="lab_calx_CaliforniaStateMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">California State</link:label>
    <link:label id="lab_calx_CaliforniaStateMember_label_en-US" xlink:label="lab_calx_CaliforniaStateMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">California State [Member]</link:label>
    <link:label id="lab_calx_CaliforniaStateMember_documentation_en-US" xlink:label="lab_calx_CaliforniaStateMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">California State [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CaliforniaStateMember" xlink:href="calx-20221231.xsd#calx_CaliforniaStateMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_CaliforniaStateMember" xlink:to="lab_calx_CaliforniaStateMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_3b7b743f-1c35-42e0-a6a0-d3c38c33fe1c_verboseLabel_en-US" xlink:label="lab_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Adjustments to reconcile net income to net cash provided by operating activities:</link:label>
    <link:label id="lab_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_label_en-US" xlink:label="lab_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Adjustments to Reconcile Net Income (Loss) to Cash Provided by (Used in) Operating Activities [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="lab_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxExpenseBenefit_f75d5879-c382-4f39-a007-f4f63a5bcda0_verboseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income taxes</link:label>
    <link:label id="lab_us-gaap_IncomeTaxExpenseBenefit_963bde86-f4d0-41e6-97e8-e9a56db2942d_totalLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income tax expense (benefit)</link:label>
    <link:label id="lab_us-gaap_IncomeTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_IncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxExpenseBenefit" xlink:to="lab_us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_SegmentGeographicalDomain_99803ede-8cfe-48c0-b149-9e43a5ccbfc7_terseLabel_en-US" xlink:label="lab_srt_SegmentGeographicalDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Geographical [Domain]</link:label>
    <link:label id="lab_srt_SegmentGeographicalDomain_label_en-US" xlink:label="lab_srt_SegmentGeographicalDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Geographical [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_SegmentGeographicalDomain" xlink:to="lab_srt_SegmentGeographicalDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsValuationAllowance_abe3b983-c938-4b56-bc12-3641567855ec_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsValuationAllowance" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Valuation allowance</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsValuationAllowance_3bdacc94-a65c-436d-9d70-1dd75b230c20_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsValuationAllowance" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Valuation allowance</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsValuationAllowance_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsValuationAllowance" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Valuation Allowance</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsValuationAllowance"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsValuationAllowance" xlink:to="lab_us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock_1acb6499-9172-4741-8100-d84733efc33e_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property and Equipment</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_PublicStockOfferingMember_653a21b7-b225-4963-bb48-d3100e09a08c_terseLabel_en-US" xlink:label="lab_calx_PublicStockOfferingMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Public Stock Offering</link:label>
    <link:label id="lab_calx_PublicStockOfferingMember_label_en-US" xlink:label="lab_calx_PublicStockOfferingMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Public Stock Offering [Member]</link:label>
    <link:label id="lab_calx_PublicStockOfferingMember_documentation_en-US" xlink:label="lab_calx_PublicStockOfferingMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Public Stock Offering</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PublicStockOfferingMember" xlink:href="calx-20221231.xsd#calx_PublicStockOfferingMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_PublicStockOfferingMember" xlink:to="lab_calx_PublicStockOfferingMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock_12784f94-8016-48fc-b950-4ccb32ef1f28_verboseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Product Warranty Liability</link:label>
    <link:label id="lab_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Product Warranty Liability [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PreferredStockParOrStatedValuePerShare_8b3b9ce1-4a63-4394-a671-f121c6e1efbc_verboseLabel_en-US" xlink:label="lab_us-gaap_PreferredStockParOrStatedValuePerShare" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred stock, par value (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_PreferredStockParOrStatedValuePerShare_label_en-US" xlink:label="lab_us-gaap_PreferredStockParOrStatedValuePerShare" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred Stock, Par or Stated Value Per Share</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockParOrStatedValuePerShare" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockParOrStatedValuePerShare"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PreferredStockParOrStatedValuePerShare" xlink:to="lab_us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_4ad18d44-db4a-4f63-87a4-901c7c7c7d45_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2026 and thereafter</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, to be Paid, Year Four</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeStatementAbstract_65fdc8d8-931e-4f67-a078-8d65b9eae12f_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeStatementAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Statement [Abstract]</link:label>
    <link:label id="lab_us-gaap_IncomeStatementAbstract_label_en-US" xlink:label="lab_us-gaap_IncomeStatementAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Statement [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeStatementAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeStatementAbstract" xlink:to="lab_us-gaap_IncomeStatementAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross_9533dbf8-dd8d-472a-acb2-e706eb1c94af_verboseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options granted (in shares)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityPublicFloat_cf1124cb-d108-494e-9c2d-3270f9dbbea8_terseLabel_en-US" xlink:label="lab_dei_EntityPublicFloat" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Public Float</link:label>
    <link:label id="lab_dei_EntityPublicFloat_label_en-US" xlink:label="lab_dei_EntityPublicFloat" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Public Float</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityPublicFloat" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityPublicFloat"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityPublicFloat" xlink:to="lab_dei_EntityPublicFloat" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_50e9e7d8-00cf-4c3e-a6de-358248820105_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Federal</link:label>
    <link:label id="lab_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Federal Income Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:to="lab_us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AdditionalPaidInCapitalMember_b1c25f7d-1c33-4a92-a662-ab17fdc4ef7e_terseLabel_en-US" xlink:label="lab_us-gaap_AdditionalPaidInCapitalMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Additional Paid-in Capital</link:label>
    <link:label id="lab_us-gaap_AdditionalPaidInCapitalMember_label_en-US" xlink:label="lab_us-gaap_AdditionalPaidInCapitalMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Additional Paid-in Capital [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AdditionalPaidInCapitalMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AdditionalPaidInCapitalMember" xlink:to="lab_us-gaap_AdditionalPaidInCapitalMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BalanceSheetLocationDomain_40f21fa2-bedf-4b03-aa19-ae9934ff7546_terseLabel_en-US" xlink:label="lab_us-gaap_BalanceSheetLocationDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance Sheet Location [Domain]</link:label>
    <link:label id="lab_us-gaap_BalanceSheetLocationDomain_label_en-US" xlink:label="lab_us-gaap_BalanceSheetLocationDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance Sheet Location [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetLocationDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BalanceSheetLocationDomain" xlink:to="lab_us-gaap_BalanceSheetLocationDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_DocumentFiscalPeriodFocus_3a34efb7-ef7c-42b3-ba9b-39c475a2fa30_terseLabel_en-US" xlink:label="lab_dei_DocumentFiscalPeriodFocus" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Fiscal Period Focus</link:label>
    <link:label id="lab_dei_DocumentFiscalPeriodFocus_label_en-US" xlink:label="lab_dei_DocumentFiscalPeriodFocus" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Fiscal Period Focus</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentFiscalPeriodFocus" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_DocumentFiscalPeriodFocus"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_DocumentFiscalPeriodFocus" xlink:to="lab_dei_DocumentFiscalPeriodFocus" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EarningsPerShareBasicAbstract_2f569443-f8d8-45f8-a09a-f3b14fceef9c_verboseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareBasicAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net income per common share:</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareBasicAbstract_label_en-US" xlink:label="lab_us-gaap_EarningsPerShareBasicAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Earnings Per Share, Basic [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasicAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareBasicAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EarningsPerShareBasicAbstract" xlink:to="lab_us-gaap_EarningsPerShareBasicAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue_ac287a9a-86a4-4a51-9ca0-e65114c22c25_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total intrinsic value for exercised stock options</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period, Intrinsic Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CostOfGoodsAndServicesSold_71bf42ab-1db0-4b85-9e1c-274fed22ed12_terseLabel_en-US" xlink:label="lab_us-gaap_CostOfGoodsAndServicesSold" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cost of revenue</link:label>
    <link:label id="lab_us-gaap_CostOfGoodsAndServicesSold_label_en-US" xlink:label="lab_us-gaap_CostOfGoodsAndServicesSold" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cost of Goods and Services Sold</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CostOfGoodsAndServicesSold" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CostOfGoodsAndServicesSold"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CostOfGoodsAndServicesSold" xlink:to="lab_us-gaap_CostOfGoodsAndServicesSold" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_40716af0-ff43-49b9-a71d-cfb1c739216d_terseLabel_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Diluted (in shares)</link:label>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_bb421a6e-21b6-4bf3-b4bb-ba3b6147fa7b_totalLabel_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted-average common shares - diluted (in shares)</link:label>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_label_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted Average Number of Shares Outstanding, Diluted</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:to="lab_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_517f881b-9176-43cc-9762-a7bf834ecb74_negatedLabel_en-US" xlink:label="lab_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated depreciation and amortization</link:label>
    <link:label id="lab_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_label_en-US" xlink:label="lab_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Depreciation, Depletion and Amortization, Property, Plant, and Equipment</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:to="lab_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfInventoryCurrentTableTextBlock_ebd23fb3-ce0a-4619-923b-43db13373726_verboseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory</link:label>
    <link:label id="lab_us-gaap_ScheduleOfInventoryCurrentTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Inventory, Current [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfInventoryCurrentTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_d79a1520-d5a0-4fa6-a5b8-4d4e983d089c_verboseLabel_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Expected life</link:label>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_label_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Term</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:to="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee_5058133a-03e4-47c7-913a-83c0d20890ac_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum number of shares employee can purchase during offering period</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Maximum Number of Shares Per Employee</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LossContingenciesLineItems_2745709b-bb67-4a93-8675-ea8cc0dad075_terseLabel_en-US" xlink:label="lab_us-gaap_LossContingenciesLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Loss Contingencies [Line Items]</link:label>
    <link:label id="lab_us-gaap_LossContingenciesLineItems_label_en-US" xlink:label="lab_us-gaap_LossContingenciesLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Loss Contingencies [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LossContingenciesLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LossContingenciesLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LossContingenciesLineItems" xlink:to="lab_us-gaap_LossContingenciesLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_d478df09-53f0-48eb-8c52-015c296f5759_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale [Line Items]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_label_en-US" xlink:label="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-Sale [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems" xlink:to="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccountsReceivableMember_be62bfee-221e-40d0-9c15-484579f77686_terseLabel_en-US" xlink:label="lab_us-gaap_AccountsReceivableMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable</link:label>
    <link:label id="lab_us-gaap_AccountsReceivableMember_label_en-US" xlink:label="lab_us-gaap_AccountsReceivableMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsReceivableMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccountsReceivableMember" xlink:to="lab_us-gaap_AccountsReceivableMember" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_IcfrAuditorAttestationFlag_b4476a94-a494-4aac-b154-322122220ab1_terseLabel_en-US" xlink:label="lab_dei_IcfrAuditorAttestationFlag" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">ICFR Auditor Attestation Flag</link:label>
    <link:label id="lab_dei_IcfrAuditorAttestationFlag_label_en-US" xlink:label="lab_dei_IcfrAuditorAttestationFlag" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">ICFR Auditor Attestation Flag</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_IcfrAuditorAttestationFlag" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_IcfrAuditorAttestationFlag"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_IcfrAuditorAttestationFlag" xlink:to="lab_dei_IcfrAuditorAttestationFlag" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan_676f3934-b024-44ea-8d04-f1ad0b0c96da_terseLabel_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares purchased under ESPP (in shares)</link:label>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan_label_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Issued During Period, Shares, Employee Stock Ownership Plan</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan" xlink:to="lab_us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockValue_503b6770-44b9-424b-87ba-e95cc93fa761_verboseLabel_en-US" xlink:label="lab_us-gaap_CommonStockValue" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common stock, $0.025 par value; 100,000 shares authorized; 65,735 shares issued and outstanding as of December 31, 2022, and 64,274 shares issued and outstanding as of December 31, 2021</link:label>
    <link:label id="lab_us-gaap_CommonStockValue_label_en-US" xlink:label="lab_us-gaap_CommonStockValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock, Value, Issued</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockValue" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockValue" xlink:to="lab_us-gaap_CommonStockValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProductWarrantyAccrualWarrantiesIssued_5372ea6d-3882-47b8-a3a3-ee80448a8a7f_verboseLabel_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrualWarrantiesIssued" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Provision for warranty and retrofit charged to cost of revenue</link:label>
    <link:label id="lab_us-gaap_ProductWarrantyAccrualWarrantiesIssued_label_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrualWarrantiesIssued" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Standard and Extended Product Warranty Accrual, Increase for Warranties Issued</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualWarrantiesIssued" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProductWarrantyAccrualWarrantiesIssued"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProductWarrantyAccrualWarrantiesIssued" xlink:to="lab_us-gaap_ProductWarrantyAccrualWarrantiesIssued" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsGrossAbstract_f34fc91d-a4cd-42a6-b3da-e15040fd85e6_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsGrossAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred tax assets:</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsGrossAbstract_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsGrossAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Gross [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsGrossAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsGrossAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsGrossAbstract" xlink:to="lab_us-gaap_DeferredTaxAssetsGrossAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_f358d2e3-3f90-4b4d-b28c-ab39a7cbb732_verboseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted-average grant date fair value per share</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_AsiaPacificMember_9cfd8181-0f49-40e4-b2b6-2e61966b7ebf_terseLabel_en-US" xlink:label="lab_srt_AsiaPacificMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Asia Pacific</link:label>
    <link:label id="lab_srt_AsiaPacificMember_label_en-US" xlink:label="lab_srt_AsiaPacificMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Asia Pacific [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_AsiaPacificMember" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_AsiaPacificMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_AsiaPacificMember" xlink:to="lab_srt_AsiaPacificMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommitmentsAndContingenciesPolicyTextBlock_64bd8951-b69e-4ccd-9fd7-e2f4515cdd73_terseLabel_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingenciesPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Loss Contingencies</link:label>
    <link:label id="lab_us-gaap_CommitmentsAndContingenciesPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingenciesPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commitments and Contingencies, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommitmentsAndContingenciesPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommitmentsAndContingenciesPolicyTextBlock" xlink:to="lab_us-gaap_CommitmentsAndContingenciesPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1_4964a6a4-47f9-4b05-b21f-e209033a4df5_terseLabel_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Aggregate intrinsic value, stock options exercisable</link:label>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1_label_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Intrinsic Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:to="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent_8c2d9560-274b-41c6-965b-81f25b23f640_terseLabel_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Target achievement performance threshold, percent</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent_label_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Net Income Per Share, Target Achievement Performance Threshold, Percent</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent_documentation_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Net Income Per Share, Target Achievement Performance Threshold, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent" xlink:to="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_OneCustomerMember_73ac26a7-dcc2-4575-a423-b5d180a67ff0_terseLabel_en-US" xlink:label="lab_calx_OneCustomerMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">One Customer</link:label>
    <link:label id="lab_calx_OneCustomerMember_label_en-US" xlink:label="lab_calx_OneCustomerMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">One Customer [Member]</link:label>
    <link:label id="lab_calx_OneCustomerMember_documentation_en-US" xlink:label="lab_calx_OneCustomerMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">One Customer</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_OneCustomerMember" xlink:href="calx-20221231.xsd#calx_OneCustomerMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_OneCustomerMember" xlink:to="lab_calx_OneCustomerMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PreferredStockSharesAuthorized_da1a3d2f-dad4-439c-9da0-a6b4d4d56f79_verboseLabel_en-US" xlink:label="lab_us-gaap_PreferredStockSharesAuthorized" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred stock, shares authorized (in shares)</link:label>
    <link:label id="lab_us-gaap_PreferredStockSharesAuthorized_label_en-US" xlink:label="lab_us-gaap_PreferredStockSharesAuthorized" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred Stock, Shares Authorized</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesAuthorized" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockSharesAuthorized"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PreferredStockSharesAuthorized" xlink:to="lab_us-gaap_PreferredStockSharesAuthorized" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent_869d299f-c3b5-4a58-a340-39d14c1210d6_terseLabel_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum contribution percent</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent_label_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Maximum Contribution Percent</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent_documentation_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Maximum Contribution Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent" xlink:to="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_90172ced-d5cd-4b17-87c0-5586ac52c702_periodStartLabel_en-US" xlink:label="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and cash equivalents at beginning of year</link:label>
    <link:label id="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_0ec913dc-c94f-4230-a03e-db3a38ec4bc2_periodEndLabel_en-US" xlink:label="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and cash equivalents at end of year</link:label>
    <link:label id="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_label_en-US" xlink:label="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:to="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_8edee223-45d1-45a2-af6b-707b200755ba_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign</link:label>
    <link:label id="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_label_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income (Loss) from Continuing Operations before Income Taxes, Foreign</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:to="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_TextBlockAbstract_label_en-US" xlink:label="lab_us-gaap_TextBlockAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Text Block [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TextBlockAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TextBlockAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TextBlockAbstract" xlink:to="lab_us-gaap_TextBlockAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock_1b561564-ab07-4f33-ac0c-a6f218b230fc_terseLabel_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commitments and Contingencies</link:label>
    <link:label id="lab_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commitments and Contingencies Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommitmentsAndContingenciesDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:to="lab_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LiabilitiesCurrentAbstract_f65877c3-5a2c-4d89-889e-9dbcf281e2ac_verboseLabel_en-US" xlink:label="lab_us-gaap_LiabilitiesCurrentAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current liabilities:</link:label>
    <link:label id="lab_us-gaap_LiabilitiesCurrentAbstract_label_en-US" xlink:label="lab_us-gaap_LiabilitiesCurrentAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Liabilities, Current [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrentAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LiabilitiesCurrentAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LiabilitiesCurrentAbstract" xlink:to="lab_us-gaap_LiabilitiesCurrentAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems_eb028683-ee83-4453-91fa-78f56de4aa84_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]</link:label>
    <link:label id="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems_label_en-US" xlink:label="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems" xlink:to="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProceedsFromStockOptionsExercised_78300440-8ac1-4089-a5ab-6ea33adb992d_verboseLabel_en-US" xlink:label="lab_us-gaap_ProceedsFromStockOptionsExercised" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Proceeds from common stock issuances related to employee benefit plans</link:label>
    <link:label id="lab_us-gaap_ProceedsFromStockOptionsExercised_label_en-US" xlink:label="lab_us-gaap_ProceedsFromStockOptionsExercised" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Proceeds from Stock Options Exercised</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromStockOptionsExercised" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProceedsFromStockOptionsExercised"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProceedsFromStockOptionsExercised" xlink:to="lab_us-gaap_ProceedsFromStockOptionsExercised" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_d763c36d-d11d-4792-8808-59bd62ac6e10_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Marketable securities</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_0a580059-b3b2-48ee-885c-30c969401983_verboseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Marketable securities</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-Sale, Excluding Accrued Interest, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockSharesIssued_5fbb16bf-967e-44c9-a9a0-f4a92013f3d3_verboseLabel_en-US" xlink:label="lab_us-gaap_CommonStockSharesIssued" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common stock, shares issued (in shares)</link:label>
    <link:label id="lab_us-gaap_CommonStockSharesIssued_label_en-US" xlink:label="lab_us-gaap_CommonStockSharesIssued" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock, Shares, Issued</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesIssued" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockSharesIssued"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockSharesIssued" xlink:to="lab_us-gaap_CommonStockSharesIssued" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskLineItems_ebec8329-2260-4457-b290-27a0fa176c5b_terseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk [Line Items]</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskLineItems_label_en-US" xlink:label="lab_us-gaap_ConcentrationRiskLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConcentrationRiskLineItems" xlink:to="lab_us-gaap_ConcentrationRiskLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1_52e7259c-a771-4928-bfee-81f4372100f1_terseLabel_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted-average remaining contractual term, stock options vested and expected to vest</link:label>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1_label_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested and Expected to Vest, Outstanding, Weighted Average Remaining Contractual Term</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:to="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ContractualTermStockOptions_a7c1f693-4c38-48b6-ab8e-e93a66fed72d_terseLabel_en-US" xlink:label="lab_calx_ContractualTermStockOptions" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contractual term, stock options</link:label>
    <link:label id="lab_calx_ContractualTermStockOptions_label_en-US" xlink:label="lab_calx_ContractualTermStockOptions" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contractual Term, Stock Options</link:label>
    <link:label id="lab_calx_ContractualTermStockOptions_documentation_en-US" xlink:label="lab_calx_ContractualTermStockOptions" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contractual Term, Stock Options</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ContractualTermStockOptions" xlink:href="calx-20221231.xsd#calx_ContractualTermStockOptions"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ContractualTermStockOptions" xlink:to="lab_calx_ContractualTermStockOptions" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ContractWithCustomerLiabilityCurrent_0119fa25-d1b7-45c4-9626-8dd635ddf979_verboseLabel_en-US" xlink:label="lab_us-gaap_ContractWithCustomerLiabilityCurrent" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred revenue</link:label>
    <link:label id="lab_us-gaap_ContractWithCustomerLiabilityCurrent_label_en-US" xlink:label="lab_us-gaap_ContractWithCustomerLiabilityCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract with Customer, Liability, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ContractWithCustomerLiabilityCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ContractWithCustomerLiabilityCurrent" xlink:to="lab_us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeStatementLocationDomain_7d5f2c4a-2c02-4924-ab8a-4e464184d084_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeStatementLocationDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Statement Location [Domain]</link:label>
    <link:label id="lab_us-gaap_IncomeStatementLocationDomain_label_en-US" xlink:label="lab_us-gaap_IncomeStatementLocationDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Statement Location [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeStatementLocationDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeStatementLocationDomain" xlink:to="lab_us-gaap_IncomeStatementLocationDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_1466fc14-3722-43f2-874c-49f704a9e005_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</link:label>
    <link:label id="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_label_en-US" xlink:label="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems" xlink:to="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_AmendmentFlag_30c1e328-642b-426e-b666-b2670e3143b5_terseLabel_en-US" xlink:label="lab_dei_AmendmentFlag" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Amendment Flag</link:label>
    <link:label id="lab_dei_AmendmentFlag_label_en-US" xlink:label="lab_dei_AmendmentFlag" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Amendment Flag</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AmendmentFlag" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_AmendmentFlag"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_AmendmentFlag" xlink:to="lab_dei_AmendmentFlag" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInInvestingActivities_84ec2c79-58b4-4ea3-b5a1-375c60b47c51_totalLabel_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net cash used in investing activities</link:label>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInInvestingActivities_label_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Cash Provided by (Used in) Investing Activities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="lab_us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseCost_6990b2d4-042d-4924-9749-530654382d9c_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseCost" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Rent expense</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseCost_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseCost" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Cost</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseCost" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseCost"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseCost" xlink:to="lab_us-gaap_OperatingLeaseCost" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ComprehensiveIncomeNetOfTax_971ca07f-d50c-42ff-a9d5-808b4fc03b0b_totalLabel_en-US" xlink:label="lab_us-gaap_ComprehensiveIncomeNetOfTax" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Comprehensive income</link:label>
    <link:label id="lab_us-gaap_ComprehensiveIncomeNetOfTax_label_en-US" xlink:label="lab_us-gaap_ComprehensiveIncomeNetOfTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Comprehensive Income (Loss), Net of Tax, Attributable to Parent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComprehensiveIncomeNetOfTax" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ComprehensiveIncomeNetOfTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ComprehensiveIncomeNetOfTax" xlink:to="lab_us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_MinimumExercisePriceOfStockOptionPercent_42651954-46fc-41d8-ac7e-7de25d59a130_terseLabel_en-US" xlink:label="lab_calx_MinimumExercisePriceOfStockOptionPercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Minimum exercise price of stock option, percentage</link:label>
    <link:label id="lab_calx_MinimumExercisePriceOfStockOptionPercent_label_en-US" xlink:label="lab_calx_MinimumExercisePriceOfStockOptionPercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Minimum Exercise Price Of Stock Option Percent</link:label>
    <link:label id="lab_calx_MinimumExercisePriceOfStockOptionPercent_documentation_en-US" xlink:label="lab_calx_MinimumExercisePriceOfStockOptionPercent" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Minimum exercise price of stock options expressed as a percentage of the fair market value of the Company&#8217;s common stock at grant date.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_MinimumExercisePriceOfStockOptionPercent" xlink:href="calx-20221231.xsd#calx_MinimumExercisePriceOfStockOptionPercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_MinimumExercisePriceOfStockOptionPercent" xlink:to="lab_calx_MinimumExercisePriceOfStockOptionPercent" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityCurrentReportingStatus_39181d3b-3bf9-495d-8da1-0de6cfe46270_terseLabel_en-US" xlink:label="lab_dei_EntityCurrentReportingStatus" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Current Reporting Status</link:label>
    <link:label id="lab_dei_EntityCurrentReportingStatus_label_en-US" xlink:label="lab_dei_EntityCurrentReportingStatus" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Current Reporting Status</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCurrentReportingStatus" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityCurrentReportingStatus"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityCurrentReportingStatus" xlink:to="lab_dei_EntityCurrentReportingStatus" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherAssetsNoncurrent_b5c379b7-8eff-437a-a0bc-8cc3594fa83a_verboseLabel_en-US" xlink:label="lab_us-gaap_OtherAssetsNoncurrent" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other assets</link:label>
    <link:label id="lab_us-gaap_OtherAssetsNoncurrent_bb244036-852b-443b-b5de-610701176e18_totalLabel_en-US" xlink:label="lab_us-gaap_OtherAssetsNoncurrent" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other assets</link:label>
    <link:label id="lab_us-gaap_OtherAssetsNoncurrent_label_en-US" xlink:label="lab_us-gaap_OtherAssetsNoncurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Assets, Noncurrent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAssetsNoncurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherAssetsNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherAssetsNoncurrent" xlink:to="lab_us-gaap_OtherAssetsNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber_1c99594f-ee70-4d78-8835-2060c686d0b4_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options exercisable (in shares)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract_dcd69533-2bbe-4e46-a31b-c1e9dbf13a63_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Options, Additional Disclosures</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Additional Disclosures [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent_b85b17ee-a886-4329-a5f9-c200b3707461_terseLabel_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Price of common stock purchased under the ESPP</link:label>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent_label_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Purchase Price of Common Stock, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:to="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_c93f3e87-af2b-4e85-9278-ce1992ba3258_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Federal statutory rate</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer_15e4d52b-4df2-44b7-a099-cb69f730eec5_terseLabel_en-US" xlink:label="lab_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Component inventory held by suppliers</link:label>
    <link:label id="lab_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer_921e1b00-b78a-421f-b3a4-e8c0f974bb33_verboseLabel_en-US" xlink:label="lab_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued professional and consulting fees</link:label>
    <link:label id="lab_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer_label_en-US" xlink:label="lab_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Excess and Obsolete Inventory At Contract Manufacturer</link:label>
    <link:label id="lab_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer_documentation_en-US" xlink:label="lab_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued excess and obsolete inventory at contract manufacturer.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer" xlink:href="calx-20221231.xsd#calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer" xlink:to="lab_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_2ad33fc6-7f6e-47c1-b70c-2a214b27193b_terseLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Additions Charged to Expenses or Revenue Net of Recoveries</link:label>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_label_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves, Additions, Charge to Cost and Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:to="lab_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_221b2b8c-6b45-4f7c-8730-f990bceeb2ec_terseLabel_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Other Comprehensive Income (Loss) [Table]</link:label>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_label_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Other Comprehensive Income (Loss) [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable" xlink:to="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_1f60332e-ec76-4d02-ba63-5988587f221d_periodStartLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options outstanding, beginning (in shares)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_57a9cfc2-f718-46d5-b5c5-d83a48f0a9fe_periodEndLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options outstanding, ending (in shares)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_7e6c3ce0-5dc8-42cb-bc56-55b3d63db5e4_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options outstanding (in shares)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsAxis_7073f26d-368e-4e80-99ae-a60935dba973_terseLabel_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and Cash Equivalents [Axis]</link:label>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsAxis_label_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and Cash Equivalents [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CashAndCashEquivalentsAxis" xlink:to="lab_us-gaap_CashAndCashEquivalentsAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost_3a25a976-0dbc-4b2f-960d-a1338a6c86c5_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-based compensation</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Nondeductible Expense, Share-Based Payment Arrangement, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityIncorporationStateCountryCode_6b2dd6ed-605d-4554-a437-ed2ecf5102e8_terseLabel_en-US" xlink:label="lab_dei_EntityIncorporationStateCountryCode" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Incorporation, State or Country Code</link:label>
    <link:label id="lab_dei_EntityIncorporationStateCountryCode_label_en-US" xlink:label="lab_dei_EntityIncorporationStateCountryCode" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Incorporation, State or Country Code</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityIncorporationStateCountryCode" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityIncorporationStateCountryCode"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityIncorporationStateCountryCode" xlink:to="lab_dei_EntityIncorporationStateCountryCode" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_ff0cd3ee-2e2f-431e-9f09-8fd98eea9a24_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Impact of state taxes</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, State and Local Income Taxes, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BasisOfAccountingPolicyPolicyTextBlock_c3de8c6f-2f99-4af1-b723-9602a482c513_terseLabel_en-US" xlink:label="lab_us-gaap_BasisOfAccountingPolicyPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Basis of Presentation and Accounting Guidance</link:label>
    <link:label id="lab_us-gaap_BasisOfAccountingPolicyPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_BasisOfAccountingPolicyPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Basis of Accounting, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BasisOfAccountingPolicyPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BasisOfAccountingPolicyPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BasisOfAccountingPolicyPolicyTextBlock" xlink:to="lab_us-gaap_BasisOfAccountingPolicyPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_e239fdcc-ddc9-4f31-98ea-f86c361de054_verboseLabel_en-US" xlink:label="lab_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effect of exchange rate changes on cash and cash equivalents</link:label>
    <link:label id="lab_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_label_en-US" xlink:label="lab_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effect of Exchange Rate on Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Continuing Operations</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:to="lab_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentNet_a69dd60d-760b-4c97-b244-f819b6035930_verboseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentNet" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property and equipment, net</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentNet_6d6dfec2-df63-44db-8b62-668ca6c1d4cc_totalLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentNet" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property and equipment, net</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentNet_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentNet" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsAbstract_7eb7bf83-e43f-4801-9c6f-3342fd9a8f87_terseLabel_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and Cash Equivalents [Abstract]</link:label>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsAbstract_label_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and Cash Equivalents [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract" xlink:to="lab_us-gaap_CashAndCashEquivalentsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeasePayments_c4cf3bea-aecc-4a52-b3f3-2719e8b043b5_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeasePayments" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating lease, payments</link:label>
    <link:label id="lab_us-gaap_OperatingLeasePayments_label_en-US" xlink:label="lab_us-gaap_OperatingLeasePayments" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Payments</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeasePayments" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeasePayments"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeasePayments" xlink:to="lab_us-gaap_OperatingLeasePayments" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SellingAndMarketingExpenseMember_7c38eff8-1ad4-4925-8176-3b54eaaddaed_verboseLabel_en-US" xlink:label="lab_us-gaap_SellingAndMarketingExpenseMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sales and marketing</link:label>
    <link:label id="lab_us-gaap_SellingAndMarketingExpenseMember_label_en-US" xlink:label="lab_us-gaap_SellingAndMarketingExpenseMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Selling and Marketing Expense [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SellingAndMarketingExpenseMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SellingAndMarketingExpenseMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SellingAndMarketingExpenseMember" xlink:to="lab_us-gaap_SellingAndMarketingExpenseMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EmployeeStockOptionMember_715df499-eb50-44b6-bb8a-feef49bbcf54_terseLabel_en-US" xlink:label="lab_us-gaap_EmployeeStockOptionMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Options</link:label>
    <link:label id="lab_us-gaap_EmployeeStockOptionMember_label_en-US" xlink:label="lab_us-gaap_EmployeeStockOptionMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Payment Arrangement, Option [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EmployeeStockOptionMember" xlink:to="lab_us-gaap_EmployeeStockOptionMember" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_TitleOfIndividualWithRelationshipToEntityDomain_9a2c6275-2abe-4fa4-808b-8a8c17e61ba3_terseLabel_en-US" xlink:label="lab_srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Title of Individual [Domain]</link:label>
    <link:label id="lab_srt_TitleOfIndividualWithRelationshipToEntityDomain_label_en-US" xlink:label="lab_srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Title of Individual [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:to="lab_srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_122ab05f-92f7-4b18-919f-aab550b95d9e_verboseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Expected volatility</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Volatility Rate</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour_220c2610-02d1-42f4-9e28-7e0c905d608f_terseLabel_en-US" xlink:label="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-based compensation expense to be recognized four years after filing</link:label>
    <link:label id="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour_label_en-US" xlink:label="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized In Year Four</link:label>
    <link:label id="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour_documentation_en-US" xlink:label="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized In Year Four</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour" xlink:href="calx-20221231.xsd#calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour" xlink:to="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent_a03f25ac-b6ae-4f0c-811b-8ffbad62338b_negatedLabel_en-US" xlink:label="lab_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Allowance for doubtful accounts</link:label>
    <link:label id="lab_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent_label_en-US" xlink:label="lab_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable, Allowance for Credit Loss, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:to="lab_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_AuditInformationAbstract_label_en-US" xlink:label="lab_calx_AuditInformationAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Audit Information [Abstract]</link:label>
    <link:label id="lab_calx_AuditInformationAbstract_documentation_en-US" xlink:label="lab_calx_AuditInformationAbstract" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Audit Information</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AuditInformationAbstract" xlink:href="calx-20221231.xsd#calx_AuditInformationAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_AuditInformationAbstract" xlink:to="lab_calx_AuditInformationAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised_43b2b5c0-065a-4d25-9922-429488a17146_terseLabel_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Issuance of common stock under equity incentive plans, net of forfeitures</link:label>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised_label_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Issued During Period, Value, Stock Options Exercised</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:to="lab_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherNonoperatingIncomeExpense_7e175565-b38b-45ba-a70f-cee8349cb580_verboseLabel_en-US" xlink:label="lab_us-gaap_OtherNonoperatingIncomeExpense" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other expense, net</link:label>
    <link:label id="lab_us-gaap_OtherNonoperatingIncomeExpense_label_en-US" xlink:label="lab_us-gaap_OtherNonoperatingIncomeExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Nonoperating Income (Expense)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherNonoperatingIncomeExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherNonoperatingIncomeExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherNonoperatingIncomeExpense" xlink:to="lab_us-gaap_OtherNonoperatingIncomeExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BalanceSheetLocationAxis_a453f7e1-09f5-4fae-b6d8-e0104ab79242_terseLabel_en-US" xlink:label="lab_us-gaap_BalanceSheetLocationAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance Sheet Location [Axis]</link:label>
    <link:label id="lab_us-gaap_BalanceSheetLocationAxis_label_en-US" xlink:label="lab_us-gaap_BalanceSheetLocationAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance Sheet Location [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetLocationAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BalanceSheetLocationAxis" xlink:to="lab_us-gaap_BalanceSheetLocationAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockSharesAuthorized_2a042abe-b90f-48d8-9091-809448c1cce6_verboseLabel_en-US" xlink:label="lab_us-gaap_CommonStockSharesAuthorized" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common stock, shares authorized (in shares)</link:label>
    <link:label id="lab_us-gaap_CommonStockSharesAuthorized_label_en-US" xlink:label="lab_us-gaap_CommonStockSharesAuthorized" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock, Shares Authorized</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesAuthorized" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockSharesAuthorized"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockSharesAuthorized" xlink:to="lab_us-gaap_CommonStockSharesAuthorized" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingExpenses_61e6bf9a-92d3-41b8-bb09-a7f571f0796e_totalLabel_en-US" xlink:label="lab_us-gaap_OperatingExpenses" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total operating expenses</link:label>
    <link:label id="lab_us-gaap_OperatingExpenses_label_en-US" xlink:label="lab_us-gaap_OperatingExpenses" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Expenses</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingExpenses" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingExpenses"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingExpenses" xlink:to="lab_us-gaap_OperatingExpenses" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_MaximumMember_d73bb2af-87a4-42d6-8df8-dc23f0289ed6_terseLabel_en-US" xlink:label="lab_srt_MaximumMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum</link:label>
    <link:label id="lab_srt_MaximumMember_label_en-US" xlink:label="lab_srt_MaximumMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_MaximumMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_MaximumMember" xlink:to="lab_srt_MaximumMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_f4b026d7-7a65-4917-bd5e-f2d58d8fead2_verboseLabel_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated other comprehensive loss</link:label>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_label_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Other Comprehensive Income (Loss), Net of Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:to="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare_c09acdc6-fe5e-46fd-9d5a-18481e0a7b24_terseLabel_en-US" xlink:label="lab_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options, intrinsic value per share (in dollars per share)</link:label>
    <link:label id="lab_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare_label_en-US" xlink:label="lab_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Intrinsic Value, Amount Per Share</link:label>
    <link:label id="lab_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare_documentation_en-US" xlink:label="lab_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Intrinsic Value, Amount Per Share</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare" xlink:href="calx-20221231.xsd#calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare" xlink:to="lab_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue_e631a0d0-9942-4f82-b1c0-4fc494209617_negatedLabel_en-US" xlink:label="lab_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Treasury stock retirement</link:label>
    <link:label id="lab_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue_label_en-US" xlink:label="lab_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Repurchased and Retired During Period, Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:to="lab_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsAtCarryingValue_cda544bb-a98e-463f-8579-bb25e09a73a5_terseLabel_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and cash equivalents</link:label>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsAtCarryingValue_ad14e09b-0db9-4245-9bc2-7ebcc55a41a8_totalLabel_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and cash equivalents</link:label>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsAtCarryingValue_label_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and Cash Equivalents, at Carrying Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:to="lab_us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInContractWithCustomerLiability_a26d10e5-7bf5-45a0-aaac-e664d743fc57_terseLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInContractWithCustomerLiability" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Contract with Customer, Liability</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInContractWithCustomerLiability_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInContractWithCustomerLiability" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Contract with Customer, Liability</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInContractWithCustomerLiability" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInContractWithCustomerLiability"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInContractWithCustomerLiability" xlink:to="lab_us-gaap_IncreaseDecreaseInContractWithCustomerLiability" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ProductReturnReserveCurrent_df1fd2d2-e72a-472c-86e2-d03883c23ad1_terseLabel_en-US" xlink:label="lab_calx_ProductReturnReserveCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product returns</link:label>
    <link:label id="lab_calx_ProductReturnReserveCurrent_label_en-US" xlink:label="lab_calx_ProductReturnReserveCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product Return Reserve, Current</link:label>
    <link:label id="lab_calx_ProductReturnReserveCurrent_documentation_en-US" xlink:label="lab_calx_ProductReturnReserveCurrent" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product Return Reserve, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ProductReturnReserveCurrent" xlink:href="calx-20221231.xsd#calx_ProductReturnReserveCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ProductReturnReserveCurrent" xlink:to="lab_calx_ProductReturnReserveCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AssetsCurrent_830336eb-1664-4c87-b447-7b1d28ca4cff_totalLabel_en-US" xlink:label="lab_us-gaap_AssetsCurrent" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total current assets</link:label>
    <link:label id="lab_us-gaap_AssetsCurrent_label_en-US" xlink:label="lab_us-gaap_AssetsCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Assets, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AssetsCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AssetsCurrent" xlink:to="lab_us-gaap_AssetsCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent_2f024a47-048a-4fcb-9070-783d7791c6ce_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign income inclusion</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, FDII, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxesPaidNet_4a133e2f-0ca7-4bee-84ce-4a7b1f909d4f_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxesPaidNet" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income taxes paid</link:label>
    <link:label id="lab_us-gaap_IncomeTaxesPaidNet_label_en-US" xlink:label="lab_us-gaap_IncomeTaxesPaidNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Taxes Paid, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxesPaidNet" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxesPaidNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxesPaidNet" xlink:to="lab_us-gaap_IncomeTaxesPaidNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ContractWithCustomerLiabilityRevenueRecognized_d3518422-d2bd-4eaf-9673-0ece0ac1f07c_terseLabel_en-US" xlink:label="lab_us-gaap_ContractWithCustomerLiabilityRevenueRecognized" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract with customer, liability, revenue recognized</link:label>
    <link:label id="lab_us-gaap_ContractWithCustomerLiabilityRevenueRecognized_label_en-US" xlink:label="lab_us-gaap_ContractWithCustomerLiabilityRevenueRecognized" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract with Customer, Liability, Revenue Recognized</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityRevenueRecognized" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ContractWithCustomerLiabilityRevenueRecognized"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ContractWithCustomerLiabilityRevenueRecognized" xlink:to="lab_us-gaap_ContractWithCustomerLiabilityRevenueRecognized" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntitySmallBusiness_19238e7f-c04e-4d93-89b4-58bb08daa35c_terseLabel_en-US" xlink:label="lab_dei_EntitySmallBusiness" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Small Business</link:label>
    <link:label id="lab_dei_EntitySmallBusiness_label_en-US" xlink:label="lab_dei_EntitySmallBusiness" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Small Business</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntitySmallBusiness" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntitySmallBusiness"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntitySmallBusiness" xlink:to="lab_dei_EntitySmallBusiness" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueMeasurementFrequencyDomain_c976485f-5b0f-4936-9d37-0d9f31369878_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueMeasurementFrequencyDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Measurement Frequency [Domain]</link:label>
    <link:label id="lab_us-gaap_FairValueMeasurementFrequencyDomain_label_en-US" xlink:label="lab_us-gaap_FairValueMeasurementFrequencyDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Measurement Frequency [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueMeasurementFrequencyDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueMeasurementFrequencyDomain" xlink:to="lab_us-gaap_FairValueMeasurementFrequencyDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod_d9650e02-54d7-4308-b6ce-0f817e6ed203_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares issued in period</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Shares Issued in Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockDividendsPerShareDeclared_274eceed-6027-48c9-b6c2-59f6fb76dfdd_terseLabel_en-US" xlink:label="lab_us-gaap_CommonStockDividendsPerShareDeclared" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Dividends declared or paid (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_CommonStockDividendsPerShareDeclared_label_en-US" xlink:label="lab_us-gaap_CommonStockDividendsPerShareDeclared" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock, Dividends, Per Share, Declared</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockDividendsPerShareDeclared" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockDividendsPerShareDeclared"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockDividendsPerShareDeclared" xlink:to="lab_us-gaap_CommonStockDividendsPerShareDeclared" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent_4f839073-3099-4d3d-ae6d-336f8ec5f0db_terseLabel_en-US" xlink:label="lab_calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Prepaid expenses and other current assets</link:label>
    <link:label id="lab_calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent_label_en-US" xlink:label="lab_calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Prepaid Expenses And Other Assets, Miscellaneous, Current</link:label>
    <link:label id="lab_calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent_documentation_en-US" xlink:label="lab_calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Prepaid Expenses And Other Assets, Miscellaneous, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent" xlink:href="calx-20221231.xsd#calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent" xlink:to="lab_calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleTerm_d30120b4-dc44-4639-8521-512f0f21779b_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleTerm" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Marketable securities, term</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleTerm_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleTerm" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-Sale, Term</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleTerm" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleTerm"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleTerm" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleTerm" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1_dd16650f-dae3-4dd3-975c-677f4fa51ddd_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Performance obligations expected to be satisfied, expected timing</link:label>
    <link:label id="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1_label_en-US" xlink:label="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1" xlink:to="lab_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock_8a7d6172-7682-4bac-a73b-e4343e6913a6_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Assets Measured on Recurring Basis</link:label>
    <link:label id="lab_us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock_label_en-US" xlink:label="lab_us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Assets Measured on Recurring Basis [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:to="lab_us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CostOfSalesPolicyTextBlock_75b8cf71-5904-4166-ab52-6b2745fdb34b_terseLabel_en-US" xlink:label="lab_us-gaap_CostOfSalesPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cost of Revenue</link:label>
    <link:label id="lab_us-gaap_CostOfSalesPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_CostOfSalesPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cost of Goods and Service [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CostOfSalesPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CostOfSalesPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CostOfSalesPolicyTextBlock" xlink:to="lab_us-gaap_CostOfSalesPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized_13a6c5e7-d70d-4e3a-8512-cd4ac37a7267_verboseLabel_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized stock-based compensation expense</link:label>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized_label_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:to="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ComputerSoftwareIntangibleAssetMember_bd344584-bfa6-414e-a98a-3153d47ae4a0_terseLabel_en-US" xlink:label="lab_us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Purchased Software</link:label>
    <link:label id="lab_us-gaap_ComputerSoftwareIntangibleAssetMember_fc74f0c4-974a-4b26-a6ea-6552804cf900_verboseLabel_en-US" xlink:label="lab_us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Licensed Software</link:label>
    <link:label id="lab_us-gaap_ComputerSoftwareIntangibleAssetMember_label_en-US" xlink:label="lab_us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Computer Software, Intangible Asset [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ComputerSoftwareIntangibleAssetMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:to="lab_us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_1f617bb4-df2e-4ba4-aee8-49333829ff75_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Options, Number of Shares:</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DepositsAssetsCurrent_a8df9a64-b3b1-49f5-92f6-f048a7b1ff4e_terseLabel_en-US" xlink:label="lab_us-gaap_DepositsAssetsCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Supplier deposits</link:label>
    <link:label id="lab_us-gaap_DepositsAssetsCurrent_label_en-US" xlink:label="lab_us-gaap_DepositsAssetsCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deposits Assets, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DepositsAssetsCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DepositsAssetsCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DepositsAssetsCurrent" xlink:to="lab_us-gaap_DepositsAssetsCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_MovementInValuationAllowancesAndReservesRollForward_f94da4cf-a33c-401e-8de3-41cc00725bd8_terseLabel_en-US" xlink:label="lab_us-gaap_MovementInValuationAllowancesAndReservesRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Movement in Valuation Allowances and Reserves [Roll Forward]</link:label>
    <link:label id="lab_us-gaap_MovementInValuationAllowancesAndReservesRollForward_label_en-US" xlink:label="lab_us-gaap_MovementInValuationAllowancesAndReservesRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Movement in Valuation Allowances and Reserves [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MovementInValuationAllowancesAndReservesRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward" xlink:to="lab_us-gaap_MovementInValuationAllowancesAndReservesRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_2159a6d3-a1e0-40a0-a58d-b4c52a05647b_terseLabel_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Payment Arrangement, Expense, Tax Benefit</link:label>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_label_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Payment Arrangement, Expense, Tax Benefit</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" xlink:to="lab_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SubleaseIncome_140b8136-246a-4d2f-b14f-50addbecf7b0_terseLabel_en-US" xlink:label="lab_us-gaap_SubleaseIncome" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sublease Income</link:label>
    <link:label id="lab_us-gaap_SubleaseIncome_label_en-US" xlink:label="lab_us-gaap_SubleaseIncome" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sublease Income</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubleaseIncome" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubleaseIncome"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SubleaseIncome" xlink:to="lab_us-gaap_SubleaseIncome" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue_90dda18d-8722-40d7-81dd-6b8d35354d39_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Aggregate intrinsic value, stock options outstanding</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Intrinsic Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentTypeDomain_e3c723bb-dcf6-43f6-985f-8f05d24aac7b_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment, Type [Domain]</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentTypeDomain_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Long-Lived Tangible Asset [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_A2019PlanMember_a6ac739e-f7aa-4818-a52c-ffc8ae7d6052_terseLabel_en-US" xlink:label="lab_calx_A2019PlanMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2019 Plan</link:label>
    <link:label id="lab_calx_A2019PlanMember_label_en-US" xlink:label="lab_calx_A2019PlanMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2019 Plan [Member]</link:label>
    <link:label id="lab_calx_A2019PlanMember_documentation_en-US" xlink:label="lab_calx_A2019PlanMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2019 Plan</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2019PlanMember" xlink:href="calx-20221231.xsd#calx_A2019PlanMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_A2019PlanMember" xlink:to="lab_calx_A2019PlanMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInAccountsReceivable_30d2b4b3-4871-4313-a835-ea0d7eaff0fc_negatedLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts receivable, net</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInAccountsReceivable_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Accounts Receivable</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:to="lab_us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_Security12bTitle_402f3b89-94da-4ded-bfd4-78ea9b169037_terseLabel_en-US" xlink:label="lab_dei_Security12bTitle" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Title of 12(b) Security</link:label>
    <link:label id="lab_dei_Security12bTitle_label_en-US" xlink:label="lab_dei_Security12bTitle" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Title of 12(b) Security</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_Security12bTitle" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_Security12bTitle"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_Security12bTitle" xlink:to="lab_dei_Security12bTitle" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_ConsolidatedEntitiesAxis_09d4a87a-0b4d-4570-b4ae-f5a6cf28e444_terseLabel_en-US" xlink:label="lab_srt_ConsolidatedEntitiesAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Consolidated Entities [Axis]</link:label>
    <link:label id="lab_srt_ConsolidatedEntitiesAxis_label_en-US" xlink:label="lab_srt_ConsolidatedEntitiesAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Consolidated Entities [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ConsolidatedEntitiesAxis" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ConsolidatedEntitiesAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_ConsolidatedEntitiesAxis" xlink:to="lab_srt_ConsolidatedEntitiesAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RepaymentsOfLinesOfCredit_f1fbcdcd-529c-4bd5-9b45-8a4f4b8526cd_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_RepaymentsOfLinesOfCredit" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments related to the line of credit</link:label>
    <link:label id="lab_us-gaap_RepaymentsOfLinesOfCredit_label_en-US" xlink:label="lab_us-gaap_RepaymentsOfLinesOfCredit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repayments of Lines of Credit</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RepaymentsOfLinesOfCredit" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RepaymentsOfLinesOfCredit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RepaymentsOfLinesOfCredit" xlink:to="lab_us-gaap_RepaymentsOfLinesOfCredit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CapitalizedContractCostImpairmentLoss_113c80a6-a8d3-4169-a08f-18e7bf00289a_terseLabel_en-US" xlink:label="lab_us-gaap_CapitalizedContractCostImpairmentLoss" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Capitalized contract cost, impairment</link:label>
    <link:label id="lab_us-gaap_CapitalizedContractCostImpairmentLoss_label_en-US" xlink:label="lab_us-gaap_CapitalizedContractCostImpairmentLoss" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Capitalized Contract Cost, Impairment Loss</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CapitalizedContractCostImpairmentLoss" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CapitalizedContractCostImpairmentLoss"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CapitalizedContractCostImpairmentLoss" xlink:to="lab_us-gaap_CapitalizedContractCostImpairmentLoss" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation_b155005e-7eaa-4dda-ab36-d6e5fd8ede1c_terseLabel_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Issuance of common stock under equity incentive plans, net of forfeitures (in shares)</link:label>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation_label_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares Issued, Shares, Share-Based Payment Arrangement, after Forfeiture</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:to="lab_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseLiability_ec9395f6-bde4-4d7a-930e-15217779131e_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiability" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating lease, liability</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseLiability_f79b049c-361b-4e7a-8ed8-ee3776ba23fa_totalLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiability" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating lease liability</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseLiability_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiability" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Liability</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiability" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiability"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseLiability" xlink:to="lab_us-gaap_OperatingLeaseLiability" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_USGovernmentAgenciesDebtSecuritiesMember_003fcdc5-b2de-40f7-aa8c-e72316bc5b31_terseLabel_en-US" xlink:label="lab_us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">U.S. government agency securities</link:label>
    <link:label id="lab_us-gaap_USGovernmentAgenciesDebtSecuritiesMember_label_en-US" xlink:label="lab_us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">US Government Agencies Debt Securities [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentAgenciesDebtSecuritiesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:to="lab_us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SegmentReportingDisclosureTextBlock_602a8210-67eb-4ef0-9a7e-2f67ebd524f9_terseLabel_en-US" xlink:label="lab_us-gaap_SegmentReportingDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue from Contracts with Customers</link:label>
    <link:label id="lab_us-gaap_SegmentReportingDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_SegmentReportingDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Segment Reporting Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SegmentReportingDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SegmentReportingDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SegmentReportingDisclosureTextBlock" xlink:to="lab_us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RoyaltyGuaranteesCommitmentsAmount_ba08eaa0-9152-462e-89fc-f94338c397d8_terseLabel_en-US" xlink:label="lab_us-gaap_RoyaltyGuaranteesCommitmentsAmount" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Royalty payment commitment amount</link:label>
    <link:label id="lab_us-gaap_RoyaltyGuaranteesCommitmentsAmount_label_en-US" xlink:label="lab_us-gaap_RoyaltyGuaranteesCommitmentsAmount" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Royalty Guarantees, Commitments, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RoyaltyGuaranteesCommitmentsAmount" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RoyaltyGuaranteesCommitmentsAmount"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RoyaltyGuaranteesCommitmentsAmount" xlink:to="lab_us-gaap_RoyaltyGuaranteesCommitmentsAmount" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LessorOperatingLeaseTermOfContract_c5bc8847-d818-42ee-a74c-ffacfd58a994_terseLabel_en-US" xlink:label="lab_us-gaap_LessorOperatingLeaseTermOfContract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sublease, term of contract</link:label>
    <link:label id="lab_us-gaap_LessorOperatingLeaseTermOfContract_label_en-US" xlink:label="lab_us-gaap_LessorOperatingLeaseTermOfContract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessor, Operating Lease, Term of Contract</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeaseTermOfContract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeaseTermOfContract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LessorOperatingLeaseTermOfContract" xlink:to="lab_us-gaap_LessorOperatingLeaseTermOfContract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesBalance_e81c0915-24b3-4b25-a023-7f93f84cd2a6_periodStartLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesBalance" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance at Beginning of Year</link:label>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesBalance_ff545ed8-bfa4-4a95-a5bb-601385e20d83_periodEndLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesBalance" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance at End of Year</link:label>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesBalance_label_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesBalance" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesBalance"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesBalance" xlink:to="lab_us-gaap_ValuationAllowancesAndReservesBalance" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy_e1db615e-b8a2-4a86-a9c1-12066e4c1458_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-Based Compensation</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Payment Arrangement [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:to="lab_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_f9aed04c-7a1b-4177-bca4-8a444d6c2658_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net accretion of available-for-sale securities</link:label>
    <link:label id="lab_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_label_en-US" xlink:label="lab_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accretion (Amortization) of Discounts and Premiums, Investments</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:to="lab_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceived_912762d3-b9c9-4ede-ba16-572c8b244bf5_totalLabel_en-US" xlink:label="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceived" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total future minimum sublease payments</link:label>
    <link:label id="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceived_label_en-US" xlink:label="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceived" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessor, Operating Lease, Payments to be Received</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceived" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeasePaymentsToBeReceived"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceived" xlink:to="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceived" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LiabilitiesAndStockholdersEquityAbstract_67744d07-9b7a-4682-87e0-d98b6b5a0486_verboseLabel_en-US" xlink:label="lab_us-gaap_LiabilitiesAndStockholdersEquityAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">LIABILITIES AND STOCKHOLDERS&#8217; EQUITY</link:label>
    <link:label id="lab_us-gaap_LiabilitiesAndStockholdersEquityAbstract_label_en-US" xlink:label="lab_us-gaap_LiabilitiesAndStockholdersEquityAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Liabilities and Equity [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LiabilitiesAndStockholdersEquityAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract" xlink:to="lab_us-gaap_LiabilitiesAndStockholdersEquityAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_acb0fa5d-53aa-4733-b6fb-f25081d45ea3_verboseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign currency translation adjustments, net</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" xlink:to="lab_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice_629d2184-e1f3-4daa-ae15-eb4eb8f98ce0_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options granted (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Grants in Period, Weighted Average Exercise Price</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_435ff2b3-c4fb-4330-a0a8-150c4f62c966_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Recurring and Nonrecurring [Table]</link:label>
    <link:label id="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_label_en-US" xlink:label="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Recurring and Nonrecurring [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable" xlink:to="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_CostOfRevenueServicesMember_bdcf00a0-3146-42dc-8a0c-caf6265b1843_verboseLabel_en-US" xlink:label="lab_calx_CostOfRevenueServicesMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Services</link:label>
    <link:label id="lab_calx_CostOfRevenueServicesMember_label_en-US" xlink:label="lab_calx_CostOfRevenueServicesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cost Of Revenue, Services [Member]</link:label>
    <link:label id="lab_calx_CostOfRevenueServicesMember_documentation_en-US" xlink:label="lab_calx_CostOfRevenueServicesMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cost Of Revenue, Services [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CostOfRevenueServicesMember" xlink:href="calx-20221231.xsd#calx_CostOfRevenueServicesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_CostOfRevenueServicesMember" xlink:to="lab_calx_CostOfRevenueServicesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CashCashEquivalentsAndMarketableSecuritiesTextBlock_ccd28adc-80da-4d9f-aca8-1efc511e75bd_terseLabel_en-US" xlink:label="lab_us-gaap_CashCashEquivalentsAndMarketableSecuritiesTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash, Cash Equivalents and Marketable Securities</link:label>
    <link:label id="lab_us-gaap_CashCashEquivalentsAndMarketableSecuritiesTextBlock_label_en-US" xlink:label="lab_us-gaap_CashCashEquivalentsAndMarketableSecuritiesTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash, Cash Equivalents, and Marketable Securities [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsAndMarketableSecuritiesTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashCashEquivalentsAndMarketableSecuritiesTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CashCashEquivalentsAndMarketableSecuritiesTextBlock" xlink:to="lab_us-gaap_CashCashEquivalentsAndMarketableSecuritiesTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GainLossOnDispositionOfAssets_9401fc34-8f3d-45dd-898d-dc661476da89_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_GainLossOnDispositionOfAssets" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Asset retirements and write-downs</link:label>
    <link:label id="lab_us-gaap_GainLossOnDispositionOfAssets_label_en-US" xlink:label="lab_us-gaap_GainLossOnDispositionOfAssets" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gain (Loss) on Disposition of Property Plant Equipment, Excluding Oil and Gas Property and Timber Property</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnDispositionOfAssets" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GainLossOnDispositionOfAssets"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GainLossOnDispositionOfAssets" xlink:to="lab_us-gaap_GainLossOnDispositionOfAssets" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SaleOfStockConsiderationReceivedOnTransaction_6eba6cb7-b3c7-4b50-ad6d-a7f5a24b8ef6_terseLabel_en-US" xlink:label="lab_us-gaap_SaleOfStockConsiderationReceivedOnTransaction" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Aggregate net proceeds from stock offering</link:label>
    <link:label id="lab_us-gaap_SaleOfStockConsiderationReceivedOnTransaction_label_en-US" xlink:label="lab_us-gaap_SaleOfStockConsiderationReceivedOnTransaction" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sale of Stock, Consideration Received on Transaction</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SaleOfStockConsiderationReceivedOnTransaction" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SaleOfStockConsiderationReceivedOnTransaction"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SaleOfStockConsiderationReceivedOnTransaction" xlink:to="lab_us-gaap_SaleOfStockConsiderationReceivedOnTransaction" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InventoryNet_fc4130d4-baf6-44ec-ab0f-c2bb4553a8bc_verboseLabel_en-US" xlink:label="lab_us-gaap_InventoryNet" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory</link:label>
    <link:label id="lab_us-gaap_InventoryNet_fef9ab40-484a-45bd-9e7d-06d5d94be752_totalLabel_en-US" xlink:label="lab_us-gaap_InventoryNet" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total inventory</link:label>
    <link:label id="lab_us-gaap_InventoryNet_label_en-US" xlink:label="lab_us-gaap_InventoryNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryNet" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InventoryNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InventoryNet" xlink:to="lab_us-gaap_InventoryNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccountsPayableCurrent_4cec50b2-b56b-47a7-9436-f05b27efdffc_verboseLabel_en-US" xlink:label="lab_us-gaap_AccountsPayableCurrent" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts payable</link:label>
    <link:label id="lab_us-gaap_AccountsPayableCurrent_label_en-US" xlink:label="lab_us-gaap_AccountsPayableCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Payable, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsPayableCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsPayableCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccountsPayableCurrent" xlink:to="lab_us-gaap_AccountsPayableCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringCharges_f99d4fa4-a76c-477a-a2d7-d97ec5f52e1d_verboseLabel_en-US" xlink:label="lab_us-gaap_RestructuringCharges" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring charges (benefit)</link:label>
    <link:label id="lab_us-gaap_RestructuringCharges_44453b42-aca9-456a-ae2f-124c29242e59_terseLabel_en-US" xlink:label="lab_us-gaap_RestructuringCharges" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring charges (benefit)</link:label>
    <link:label id="lab_us-gaap_RestructuringCharges_label_en-US" xlink:label="lab_us-gaap_RestructuringCharges" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Charges</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringCharges"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringCharges" xlink:to="lab_us-gaap_RestructuringCharges" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxAuthorityAxis_24b4123d-2507-4b02-a4b2-f4726e5c77cc_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxAuthorityAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Authority [Axis]</link:label>
    <link:label id="lab_us-gaap_IncomeTaxAuthorityAxis_label_en-US" xlink:label="lab_us-gaap_IncomeTaxAuthorityAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Authority [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxAuthorityAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxAuthorityAxis" xlink:to="lab_us-gaap_IncomeTaxAuthorityAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue_ac63b905-91b4-4e7c-8529-6885af36519f_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Aggregate intrinsic value, stock options vested and expected to vest</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested and Expected to Vest, Outstanding, Aggregate Intrinsic Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_AuditorLocation_c50dddc7-654e-41ab-b517-8cc00d29b0bb_terseLabel_en-US" xlink:label="lab_dei_AuditorLocation" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Auditor Location</link:label>
    <link:label id="lab_dei_AuditorLocation_label_en-US" xlink:label="lab_dei_AuditorLocation" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Auditor Location</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AuditorLocation" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_AuditorLocation"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_AuditorLocation" xlink:to="lab_dei_AuditorLocation" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityFilerCategory_8cdd8f28-694b-49a1-861c-ca1fd3d06315_terseLabel_en-US" xlink:label="lab_dei_EntityFilerCategory" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Filer Category</link:label>
    <link:label id="lab_dei_EntityFilerCategory_label_en-US" xlink:label="lab_dei_EntityFilerCategory" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Filer Category</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityFilerCategory" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityFilerCategory"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityFilerCategory" xlink:to="lab_dei_EntityFilerCategory" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProceedsFromIssuanceOfCommonStock_bb38df71-79a1-4169-8b6c-4e75c396128e_terseLabel_en-US" xlink:label="lab_us-gaap_ProceedsFromIssuanceOfCommonStock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Proceeds from the sale of common stock in connection with public offering, net of expenses</link:label>
    <link:label id="lab_us-gaap_ProceedsFromIssuanceOfCommonStock_label_en-US" xlink:label="lab_us-gaap_ProceedsFromIssuanceOfCommonStock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Proceeds from Issuance of Common Stock</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromIssuanceOfCommonStock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProceedsFromIssuanceOfCommonStock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProceedsFromIssuanceOfCommonStock" xlink:to="lab_us-gaap_ProceedsFromIssuanceOfCommonStock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_199e18fb-5d9b-4425-b767-9be19eb68cc8_terseLabel_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Basic (in shares)</link:label>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_001a5377-3446-40a2-8d1d-0b93d970bb08_verboseLabel_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted-average common shares - basic (in shares)</link:label>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_label_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted Average Number of Shares Outstanding, Basic</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:to="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CurrentFederalTaxExpenseBenefit_204ea9cd-0088-4f9f-8daf-ee323803e4d2_terseLabel_en-US" xlink:label="lab_us-gaap_CurrentFederalTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Federal</link:label>
    <link:label id="lab_us-gaap_CurrentFederalTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_CurrentFederalTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current Federal Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentFederalTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CurrentFederalTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CurrentFederalTaxExpenseBenefit" xlink:to="lab_us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_country_US_bdc504db-b036-4dbc-89fd-4fd6481c1927_terseLabel_en-US" xlink:label="lab_country_US" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">United States</link:label>
    <link:label id="lab_country_US_label_en-US" xlink:label="lab_country_US" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">UNITED STATES</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_country_US" xlink:href="https://xbrl.sec.gov/country/2022/country-2022.xsd#country_US"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_country_US" xlink:to="lab_country_US" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock_9195b6b5-1970-4663-91ff-d0c9042ac10e_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Unrecognized Compensation Cost</link:label>
    <link:label id="lab_us-gaap_ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Payment Arrangement, Nonvested Award, Cost [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccruedLiabilitiesCurrentAbstract_fb77d9d8-fb27-42bd-a14c-2a4e786cb582_verboseLabel_en-US" xlink:label="lab_us-gaap_AccruedLiabilitiesCurrentAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Summary of accrued liabilities</link:label>
    <link:label id="lab_us-gaap_AccruedLiabilitiesCurrentAbstract_label_en-US" xlink:label="lab_us-gaap_AccruedLiabilitiesCurrentAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Liabilities, Current [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrentAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccruedLiabilitiesCurrentAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract" xlink:to="lab_us-gaap_AccruedLiabilitiesCurrentAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AllocatedShareBasedCompensationExpense_e662f29c-5e00-4b9e-9f1a-749def18e77d_verboseLabel_en-US" xlink:label="lab_us-gaap_AllocatedShareBasedCompensationExpense" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock based compensation</link:label>
    <link:label id="lab_us-gaap_AllocatedShareBasedCompensationExpense_label_en-US" xlink:label="lab_us-gaap_AllocatedShareBasedCompensationExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Payment Arrangement, Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllocatedShareBasedCompensationExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AllocatedShareBasedCompensationExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AllocatedShareBasedCompensationExpense" xlink:to="lab_us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NoncashInvestingAndFinancingItemsAbstract_2e53b63d-8e6e-44bc-90c0-b1037b99d551_verboseLabel_en-US" xlink:label="lab_us-gaap_NoncashInvestingAndFinancingItemsAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Non-cash investing activities:</link:label>
    <link:label id="lab_us-gaap_NoncashInvestingAndFinancingItemsAbstract_label_en-US" xlink:label="lab_us-gaap_NoncashInvestingAndFinancingItemsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Noncash Investing and Financing Items [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncashInvestingAndFinancingItemsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NoncashInvestingAndFinancingItemsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NoncashInvestingAndFinancingItemsAbstract" xlink:to="lab_us-gaap_NoncashInvestingAndFinancingItemsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommitmentsAndContingencies_ef7f1b3d-4f49-4973-ad1b-9aff036e3216_verboseLabel_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingencies" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commitments and contingencies (See Note 5)</link:label>
    <link:label id="lab_us-gaap_CommitmentsAndContingencies_label_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingencies" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commitments and Contingencies</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingencies" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommitmentsAndContingencies"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommitmentsAndContingencies" xlink:to="lab_us-gaap_CommitmentsAndContingencies" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_SecurityExchangeName_7b256dd3-4cc2-4d29-9e9b-e333377cda9e_terseLabel_en-US" xlink:label="lab_dei_SecurityExchangeName" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Security Exchange Name</link:label>
    <link:label id="lab_dei_SecurityExchangeName_label_en-US" xlink:label="lab_dei_SecurityExchangeName" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Security Exchange Name</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_SecurityExchangeName" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_SecurityExchangeName"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_SecurityExchangeName" xlink:to="lab_dei_SecurityExchangeName" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_0d20ac45-7a4a-4a27-aed5-3da789fa2979_periodStartLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options outstanding, beginning (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_15a86b80-4818-46ee-8978-e180a1b029bb_periodEndLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options outstanding, ending (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ShortTermMarketableSecuritiesMember_66541e2c-57f9-4364-b009-eb763a199fc5_terseLabel_en-US" xlink:label="lab_calx_ShortTermMarketableSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Short-Term Marketable Securities</link:label>
    <link:label id="lab_calx_ShortTermMarketableSecuritiesMember_label_en-US" xlink:label="lab_calx_ShortTermMarketableSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Short-Term Marketable Securities [Member]</link:label>
    <link:label id="lab_calx_ShortTermMarketableSecuritiesMember_documentation_en-US" xlink:label="lab_calx_ShortTermMarketableSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Short-Term Marketable Securities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShortTermMarketableSecuritiesMember" xlink:href="calx-20221231.xsd#calx_ShortTermMarketableSecuritiesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ShortTermMarketableSecuritiesMember" xlink:to="lab_calx_ShortTermMarketableSecuritiesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_PercentOfHistoricalVolatility_26ed5aeb-5395-48c1-80ef-b8ca59ac5a9f_terseLabel_en-US" xlink:label="lab_calx_PercentOfHistoricalVolatility" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Percent of historical volatility</link:label>
    <link:label id="lab_calx_PercentOfHistoricalVolatility_label_en-US" xlink:label="lab_calx_PercentOfHistoricalVolatility" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Percent of Historical Volatility</link:label>
    <link:label id="lab_calx_PercentOfHistoricalVolatility_documentation_en-US" xlink:label="lab_calx_PercentOfHistoricalVolatility" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Percent of Historical Volatility</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PercentOfHistoricalVolatility" xlink:href="calx-20221231.xsd#calx_PercentOfHistoricalVolatility"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_PercentOfHistoricalVolatility" xlink:to="lab_calx_PercentOfHistoricalVolatility" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PreferredStockValue_ac4fdacb-2faf-4ced-9717-2274aa8ea253_verboseLabel_en-US" xlink:label="lab_us-gaap_PreferredStockValue" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred stock, $0.025 par value; 5,000 shares authorized; no shares issued and outstanding as of December 31, 2022 and 2021</link:label>
    <link:label id="lab_us-gaap_PreferredStockValue_label_en-US" xlink:label="lab_us-gaap_PreferredStockValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred Stock, Value, Issued</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockValue" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PreferredStockValue" xlink:to="lab_us-gaap_PreferredStockValue" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_EmployeeStockPurchasePlanMember_08fdbdaa-d4af-4dad-9e7c-abf647c66aad_terseLabel_en-US" xlink:label="lab_calx_EmployeeStockPurchasePlanMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Stock Purchase Plan</link:label>
    <link:label id="lab_calx_EmployeeStockPurchasePlanMember_label_en-US" xlink:label="lab_calx_EmployeeStockPurchasePlanMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Stock Purchase Plan [Member]</link:label>
    <link:label id="lab_calx_EmployeeStockPurchasePlanMember_documentation_en-US" xlink:label="lab_calx_EmployeeStockPurchasePlanMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Stock Purchase Plan</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EmployeeStockPurchasePlanMember" xlink:href="calx-20221231.xsd#calx_EmployeeStockPurchasePlanMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_EmployeeStockPurchasePlanMember" xlink:to="lab_calx_EmployeeStockPurchasePlanMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentLineItems_41989dbb-e630-4873-892e-418da830d9bb_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment [Line Items]</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentLineItems_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock_75bc2fd4-387c-40f1-90cf-17b495d217cb_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property and Equipment by Geographic Region</link:label>
    <link:label id="lab_us-gaap_ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Disclosure on Geographic Areas, Long-Lived Assets in Individual Foreign Countries by Country [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock" xlink:to="lab_us-gaap_ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GeneralAndAdministrativeExpenseMember_71790f8c-3e27-4b4e-bdf2-f9505708ebc3_verboseLabel_en-US" xlink:label="lab_us-gaap_GeneralAndAdministrativeExpenseMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">General and administrative</link:label>
    <link:label id="lab_us-gaap_GeneralAndAdministrativeExpenseMember_label_en-US" xlink:label="lab_us-gaap_GeneralAndAdministrativeExpenseMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">General and Administrative Expense [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GeneralAndAdministrativeExpenseMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GeneralAndAdministrativeExpenseMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GeneralAndAdministrativeExpenseMember" xlink:to="lab_us-gaap_GeneralAndAdministrativeExpenseMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_b8369d04-c6af-4008-b62c-a663567daf78_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue</link:label>
    <link:label id="lab_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_label_en-US" xlink:label="lab_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue from Contract with Customer, Excluding Assessed Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax" xlink:to="lab_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityWellKnownSeasonedIssuer_389fda15-89b0-4aa5-8b27-19bb9dd047c0_terseLabel_en-US" xlink:label="lab_dei_EntityWellKnownSeasonedIssuer" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Well-known Seasoned Issuer</link:label>
    <link:label id="lab_dei_EntityWellKnownSeasonedIssuer_label_en-US" xlink:label="lab_dei_EntityWellKnownSeasonedIssuer" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Well-known Seasoned Issuer</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityWellKnownSeasonedIssuer" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityWellKnownSeasonedIssuer"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityWellKnownSeasonedIssuer" xlink:to="lab_dei_EntityWellKnownSeasonedIssuer" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance_d93acdee-ed7f-472d-b2d1-a56e8a8ced0a_terseLabel_en-US" xlink:label="lab_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares available for future issuance (in shares)</link:label>
    <link:label id="lab_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance_label_en-US" xlink:label="lab_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock, Capital Shares Reserved for Future Issuance</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockCapitalSharesReservedForFutureIssuance"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:to="lab_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_CoverAbstract_e5b26c05-3427-41b5-a742-3e88d660c860_terseLabel_en-US" xlink:label="lab_dei_CoverAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cover [Abstract]</link:label>
    <link:label id="lab_dei_CoverAbstract_label_en-US" xlink:label="lab_dei_CoverAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cover [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_CoverAbstract" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_CoverAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_CoverAbstract" xlink:to="lab_dei_CoverAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityVoluntaryFilers_b95eeafa-5e67-45ba-b717-5dc59e14010d_terseLabel_en-US" xlink:label="lab_dei_EntityVoluntaryFilers" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Voluntary Filers</link:label>
    <link:label id="lab_dei_EntityVoluntaryFilers_label_en-US" xlink:label="lab_dei_EntityVoluntaryFilers" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Voluntary Filers</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityVoluntaryFilers" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityVoluntaryFilers"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityVoluntaryFilers" xlink:to="lab_dei_EntityVoluntaryFilers" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GoodwillImpairmentLoss_4d36e38c-09ae-439f-af65-4a2436f3ddc9_terseLabel_en-US" xlink:label="lab_us-gaap_GoodwillImpairmentLoss" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill, impairment loss</link:label>
    <link:label id="lab_us-gaap_GoodwillImpairmentLoss_label_en-US" xlink:label="lab_us-gaap_GoodwillImpairmentLoss" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill, Impairment Loss</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillImpairmentLoss" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GoodwillImpairmentLoss"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GoodwillImpairmentLoss" xlink:to="lab_us-gaap_GoodwillImpairmentLoss" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther_80583b4f-cc14-4b5e-912a-ba96cb9140e9_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other permanent items</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Nondeductible Expense, Other, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ContractWithCustomerAssetPriorPeriodNotRecognized_dd4bb195-4d1d-4b80-ac9a-335a592a775a_terseLabel_en-US" xlink:label="lab_calx_ContractWithCustomerAssetPriorPeriodNotRecognized" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract with customer, asset, prior period, not recognized</link:label>
    <link:label id="lab_calx_ContractWithCustomerAssetPriorPeriodNotRecognized_label_en-US" xlink:label="lab_calx_ContractWithCustomerAssetPriorPeriodNotRecognized" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract With Customer, Asset, Prior Period, Not Recognized</link:label>
    <link:label id="lab_calx_ContractWithCustomerAssetPriorPeriodNotRecognized_documentation_en-US" xlink:label="lab_calx_ContractWithCustomerAssetPriorPeriodNotRecognized" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract With Customer, Asset, Prior Period, Not Recognized</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ContractWithCustomerAssetPriorPeriodNotRecognized" xlink:href="calx-20221231.xsd#calx_ContractWithCustomerAssetPriorPeriodNotRecognized"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ContractWithCustomerAssetPriorPeriodNotRecognized" xlink:to="lab_calx_ContractWithCustomerAssetPriorPeriodNotRecognized" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsDeferredIncome_d23ec774-35b1-4486-acd5-6d5b91082981_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsDeferredIncome" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred revenue</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsDeferredIncome_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsDeferredIncome" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Deferred Income</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsDeferredIncome" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsDeferredIncome"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsDeferredIncome" xlink:to="lab_us-gaap_DeferredTaxAssetsDeferredIncome" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockRepurchaseProgramPeriodInForce1_fa2d76ca-6cfd-41c6-a15a-2d02fda22eb6_terseLabel_en-US" xlink:label="lab_us-gaap_StockRepurchaseProgramPeriodInForce1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock repurchase program, period authorized</link:label>
    <link:label id="lab_us-gaap_StockRepurchaseProgramPeriodInForce1_label_en-US" xlink:label="lab_us-gaap_StockRepurchaseProgramPeriodInForce1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Repurchase Program, Period in Force</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchaseProgramPeriodInForce1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockRepurchaseProgramPeriodInForce1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockRepurchaseProgramPeriodInForce1" xlink:to="lab_us-gaap_StockRepurchaseProgramPeriodInForce1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears_1e02f97a-dec2-4bdf-b02a-d3d149835ccf_terseLabel_en-US" xlink:label="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2024</link:label>
    <link:label id="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears_label_en-US" xlink:label="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessor, Operating Lease, Payment to be Received, Year Two</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears" xlink:to="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_USGovernmentDebtSecuritiesMember_81d28a5b-aae3-460c-87b6-a5e0edf8c4be_terseLabel_en-US" xlink:label="lab_us-gaap_USGovernmentDebtSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">U.S. government securities</link:label>
    <link:label id="lab_us-gaap_USGovernmentDebtSecuritiesMember_label_en-US" xlink:label="lab_us-gaap_USGovernmentDebtSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">US Government Debt Securities [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentDebtSecuritiesMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentDebtSecuritiesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_USGovernmentDebtSecuritiesMember" xlink:to="lab_us-gaap_USGovernmentDebtSecuritiesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_7c0edecc-d9ee-4b86-afad-eb4162e3f05d_verboseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Risk-free interest rate</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Risk Free Interest Rate</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_DocumentsIncorporatedByReferenceTextBlock_b25619e5-7329-400c-9f86-cf2b7f1df3e6_terseLabel_en-US" xlink:label="lab_dei_DocumentsIncorporatedByReferenceTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Documents Incorporated by Reference</link:label>
    <link:label id="lab_dei_DocumentsIncorporatedByReferenceTextBlock_label_en-US" xlink:label="lab_dei_DocumentsIncorporatedByReferenceTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Documents Incorporated by Reference [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentsIncorporatedByReferenceTextBlock" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_DocumentsIncorporatedByReferenceTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_DocumentsIncorporatedByReferenceTextBlock" xlink:to="lab_dei_DocumentsIncorporatedByReferenceTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LiabilitiesAndStockholdersEquity_d235e599-cdd3-4ee1-9c82-c38a213137e1_totalLabel_en-US" xlink:label="lab_us-gaap_LiabilitiesAndStockholdersEquity" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total liabilities and stockholders' equity</link:label>
    <link:label id="lab_us-gaap_LiabilitiesAndStockholdersEquity_label_en-US" xlink:label="lab_us-gaap_LiabilitiesAndStockholdersEquity" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Liabilities and Equity</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesAndStockholdersEquity" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LiabilitiesAndStockholdersEquity"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="lab_us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock_19bbce25-e729-4cc6-83ba-4d2650f513b1_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Deferred Tax Assets and Liabilities</link:label>
    <link:label id="lab_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Deferred Tax Assets and Liabilities [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_Cash_78c76175-9205-4c09-9a99-e2cff119c806_terseLabel_en-US" xlink:label="lab_us-gaap_Cash" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash</link:label>
    <link:label id="lab_us-gaap_Cash_label_en-US" xlink:label="lab_us-gaap_Cash" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Cash"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_Cash" xlink:to="lab_us-gaap_Cash" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements_a614555b-143c-476e-9a3b-74cdfff57912_terseLabel_en-US" xlink:label="lab_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effect of dilutive potential common shares (in shares)</link:label>
    <link:label id="lab_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements_label_en-US" xlink:label="lab_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Incremental Common Shares Attributable to Dilutive Effect of Share-Based Payment Arrangements</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:to="lab_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StandardProductWarrantyPolicy_ded163b1-05de-4242-af0a-abcd18a86308_terseLabel_en-US" xlink:label="lab_us-gaap_StandardProductWarrantyPolicy" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Warranty and Retrofit</link:label>
    <link:label id="lab_us-gaap_StandardProductWarrantyPolicy_label_en-US" xlink:label="lab_us-gaap_StandardProductWarrantyPolicy" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Standard Product Warranty, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StandardProductWarrantyPolicy" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StandardProductWarrantyPolicy"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StandardProductWarrantyPolicy" xlink:to="lab_us-gaap_StandardProductWarrantyPolicy" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesTypeAxis_ecb3aa73-3d93-4d50-9e0d-8826a9f665ad_terseLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves Type [Axis]</link:label>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesTypeAxis_label_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves Type [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesTypeAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:to="lab_us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsGross_9a2eebfe-5bf3-4c2d-a47c-cd194e49764e_totalLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsGross" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross deferred tax assets</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsGross_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsGross" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsGross" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsGross"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsGross" xlink:to="lab_us-gaap_DeferredTaxAssetsGross" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock_10d64c9c-43e6-48b3-a5a0-2b6218c7be55_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Income before Income Tax, Domestic and Foreign</link:label>
    <link:label id="lab_us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Income before Income Tax, Domestic and Foreign [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueInputsLevel2Member_0a215325-3893-409d-9d8d-ef74072d202c_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueInputsLevel2Member" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Level 2</link:label>
    <link:label id="lab_us-gaap_FairValueInputsLevel2Member_label_en-US" xlink:label="lab_us-gaap_FairValueInputsLevel2Member" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Inputs, Level 2 [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel2Member" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueInputsLevel2Member"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueInputsLevel2Member" xlink:to="lab_us-gaap_FairValueInputsLevel2Member" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_CurrentFiscalYearEndDate_4a49e177-7d37-4325-80a7-5ea967dceea3_terseLabel_en-US" xlink:label="lab_dei_CurrentFiscalYearEndDate" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current Fiscal Year End Date</link:label>
    <link:label id="lab_dei_CurrentFiscalYearEndDate_label_en-US" xlink:label="lab_dei_CurrentFiscalYearEndDate" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current Fiscal Year End Date</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_CurrentFiscalYearEndDate" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_CurrentFiscalYearEndDate"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_CurrentFiscalYearEndDate" xlink:to="lab_dei_CurrentFiscalYearEndDate" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_7e66264f-ef0d-4d23-9a71-901d6956a2de_terseLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued interest or penalties for uncertain income tax</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_label_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits, Income Tax Penalties and Interest Accrued</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued" xlink:to="lab_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_PerformanceBasedStockOptionsMember_dae62720-fc83-4151-9307-ffcd6b569c87_terseLabel_en-US" xlink:label="lab_calx_PerformanceBasedStockOptionsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Performance Based Stock Options</link:label>
    <link:label id="lab_calx_PerformanceBasedStockOptionsMember_label_en-US" xlink:label="lab_calx_PerformanceBasedStockOptionsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Performance Based Stock Options [Member]</link:label>
    <link:label id="lab_calx_PerformanceBasedStockOptionsMember_documentation_en-US" xlink:label="lab_calx_PerformanceBasedStockOptionsMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Performance Based Stock Options</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PerformanceBasedStockOptionsMember" xlink:href="calx-20221231.xsd#calx_PerformanceBasedStockOptionsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_PerformanceBasedStockOptionsMember" xlink:to="lab_calx_PerformanceBasedStockOptionsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount_d3c407b3-7c24-40af-b37a-218019b4a4c2_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Less imputed interest</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, Undiscounted Excess Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_VestingAxis_21f71eaa-7e86-43c8-bce8-4eaf6209844b_terseLabel_en-US" xlink:label="lab_us-gaap_VestingAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Vesting [Axis]</link:label>
    <link:label id="lab_us-gaap_VestingAxis_label_en-US" xlink:label="lab_us-gaap_VestingAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Vesting [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_VestingAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_VestingAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_VestingAxis" xlink:to="lab_us-gaap_VestingAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IntangibleAssetsNetExcludingGoodwill_cfc01294-beee-4440-9b35-dd1fbb39dd63_terseLabel_en-US" xlink:label="lab_us-gaap_IntangibleAssetsNetExcludingGoodwill" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Intangible asset</link:label>
    <link:label id="lab_us-gaap_IntangibleAssetsNetExcludingGoodwill_label_en-US" xlink:label="lab_us-gaap_IntangibleAssetsNetExcludingGoodwill" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Intangible Assets, Net (Excluding Goodwill)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IntangibleAssetsNetExcludingGoodwill"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill" xlink:to="lab_us-gaap_IntangibleAssetsNetExcludingGoodwill" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsLineItems_ef3dd07e-f298-42bb-b288-85047ff98697_terseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Assets [Line Items]</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsLineItems_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Assets [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FiniteLivedIntangibleAssetsLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetsLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EarningsPerShareDiluted_37ba6087-bef7-4f51-b04e-5a6ae4e05f2e_terseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareDiluted" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Diluted (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareDiluted_02b143a5-9328-441c-ae96-7b27a04523f1_verboseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareDiluted" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Diluted net income (loss) per common share (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareDiluted_label_en-US" xlink:label="lab_us-gaap_EarningsPerShareDiluted" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Earnings Per Share, Diluted</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDiluted" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareDiluted"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EarningsPerShareDiluted" xlink:to="lab_us-gaap_EarningsPerShareDiluted" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SaleOfStockNameOfTransactionDomain_b47540fc-25d0-4279-bc8d-19d56dcdec9e_terseLabel_en-US" xlink:label="lab_us-gaap_SaleOfStockNameOfTransactionDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sale of Stock [Domain]</link:label>
    <link:label id="lab_us-gaap_SaleOfStockNameOfTransactionDomain_label_en-US" xlink:label="lab_us-gaap_SaleOfStockNameOfTransactionDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sale of Stock [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SaleOfStockNameOfTransactionDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SaleOfStockNameOfTransactionDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SaleOfStockNameOfTransactionDomain" xlink:to="lab_us-gaap_SaleOfStockNameOfTransactionDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationAwardTrancheTwoMember_b350bd02-2d32-48fc-b1ab-2c3434fe4a46_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationAwardTrancheTwoMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Period Two</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationAwardTrancheTwoMember_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationAwardTrancheTwoMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Payment Arrangement, Tranche Two [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationAwardTrancheTwoMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationAwardTrancheTwoMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationAwardTrancheTwoMember" xlink:to="lab_us-gaap_ShareBasedCompensationAwardTrancheTwoMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_7242f840-5aa1-4f12-9596-35495fab06c5_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Vesting period</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Award Vesting Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_BrazilChinaAndUnitedKingdomMember_31eb9c57-0662-4c71-93c4-45bd9b47c6d8_terseLabel_en-US" xlink:label="lab_calx_BrazilChinaAndUnitedKingdomMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Brazil, China And United Kingdom</link:label>
    <link:label id="lab_calx_BrazilChinaAndUnitedKingdomMember_label_en-US" xlink:label="lab_calx_BrazilChinaAndUnitedKingdomMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Brazil, China And United Kingdom [Member]</link:label>
    <link:label id="lab_calx_BrazilChinaAndUnitedKingdomMember_documentation_en-US" xlink:label="lab_calx_BrazilChinaAndUnitedKingdomMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Brazil, China And United Kingdom</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_BrazilChinaAndUnitedKingdomMember" xlink:href="calx-20221231.xsd#calx_BrazilChinaAndUnitedKingdomMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_BrazilChinaAndUnitedKingdomMember" xlink:to="lab_calx_BrazilChinaAndUnitedKingdomMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_f4b605ee-7d2d-4182-9314-f6c4dfa89783_terseLabel_en-US" xlink:label="lab_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-based compensation</link:label>
    <link:label id="lab_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_label_en-US" xlink:label="lab_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">APIC, Share-Based Payment Arrangement, Increase for Cost Recognition</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:to="lab_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_15cc08b1-15bb-47e6-bc63-4f1240468e77_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Revenues from External Customers and Long-Lived Assets [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Revenues from External Customers and Long-Lived Assets [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable" xlink:to="lab_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskByTypeAxis_986fa340-3127-4d8f-bf12-476c8a0ea827_terseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskByTypeAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Type [Axis]</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskByTypeAxis_label_en-US" xlink:label="lab_us-gaap_ConcentrationRiskByTypeAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Type [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByTypeAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskByTypeAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConcentrationRiskByTypeAxis" xlink:to="lab_us-gaap_ConcentrationRiskByTypeAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes_9f0f7763-d190-4636-8961-fa10ca0f615f_terseLabel_en-US" xlink:label="lab_calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Taxes payable</link:label>
    <link:label id="lab_calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes_label_en-US" xlink:label="lab_calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Taxes Payable, Current, Excluding Accrued Income Taxes</link:label>
    <link:label id="lab_calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes_documentation_en-US" xlink:label="lab_calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Taxes Payable, Current, Excluding Accrued Income Taxes</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes" xlink:href="calx-20221231.xsd#calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes" xlink:to="lab_calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LiabilitiesCurrent_9bccdcee-c67c-4257-ab69-27063eeb81e3_totalLabel_en-US" xlink:label="lab_us-gaap_LiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total current liabilities</link:label>
    <link:label id="lab_us-gaap_LiabilitiesCurrent_label_en-US" xlink:label="lab_us-gaap_LiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Liabilities, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LiabilitiesCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LiabilitiesCurrent" xlink:to="lab_us-gaap_LiabilitiesCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_55c8772b-55aa-44b2-82b9-3a3a799cfb21_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2024</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, to be Paid, Year Two</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock_dded1ea3-3618-4db8-ad1a-dfcd9a8e2e64_verboseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable, net</link:label>
    <link:label id="lab_us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Accounts, Notes, Loans and Financing Receivable [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock" xlink:to="lab_us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract_64cebd93-09af-4e8f-ab45-60924f74e704_verboseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted-average number of shares used to compute net income per common share:</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract_label_en-US" xlink:label="lab_us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Earnings Per Share, Diluted, Other Disclosure [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract" xlink:to="lab_us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CustomerConcentrationRiskMember_7f736676-71ff-4019-bea1-ef8750a97c35_terseLabel_en-US" xlink:label="lab_us-gaap_CustomerConcentrationRiskMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer Concentration Risk</link:label>
    <link:label id="lab_us-gaap_CustomerConcentrationRiskMember_label_en-US" xlink:label="lab_us-gaap_CustomerConcentrationRiskMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer Concentration Risk [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CustomerConcentrationRiskMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CustomerConcentrationRiskMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CustomerConcentrationRiskMember" xlink:to="lab_us-gaap_CustomerConcentrationRiskMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefits_c97b8010-fbf3-4e70-833d-8d3f93e9ad9d_periodStartLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefits" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance at beginning of year</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefits_9bb2aa59-b444-4eca-8a7d-2c54efb616e9_periodEndLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefits" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance at end of year</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefits_379956a6-a507-4c36-b8df-35e7c9bd2e49_terseLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefits" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized tax benefits</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefits_label_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefits" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefits" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefits"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UnrecognizedTaxBenefits" xlink:to="lab_us-gaap_UnrecognizedTaxBenefits" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsNet_53741b6c-b823-4c46-a0e3-ffdde1b32c64_totalLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsNet" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total deferred tax assets</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsNet_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Net of Valuation Allowance</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsNet" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsNet" xlink:to="lab_us-gaap_DeferredTaxAssetsNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets_f2fc23c9-0028-4189-ab4f-05de78cfc7df_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Intangible assets</link:label>
    <link:label id="lab_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets_label_en-US" xlink:label="lab_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Liabilities, Intangible Assets</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" xlink:to="lab_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringCostAndReserveLineItems_d5610400-fb5f-4995-ab84-ce5277b7412a_terseLabel_en-US" xlink:label="lab_us-gaap_RestructuringCostAndReserveLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Cost and Reserve [Line Items]</link:label>
    <link:label id="lab_us-gaap_RestructuringCostAndReserveLineItems_label_en-US" xlink:label="lab_us-gaap_RestructuringCostAndReserveLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Cost and Reserve [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringCostAndReserveLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems" xlink:to="lab_us-gaap_RestructuringCostAndReserveLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock_45eb677c-e0c9-4632-9ff6-ca5c2178aefd_terseLabel_en-US" xlink:label="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessor, Operating Lease, Payment to be Received, Fiscal Year Maturity</link:label>
    <link:label id="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock_label_en-US" xlink:label="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessor, Operating Lease, Payment to be Received, Fiscal Year Maturity [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock" xlink:to="lab_us-gaap_LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate_768c5938-5c62-4f3d-b67d-8a07e7895808_terseLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized tax benefits that would impact effective tax rate</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate_label_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits that Would Impact Effective Tax Rate</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate" xlink:to="lab_us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueRemainingPerformanceObligation_3aac161d-90ad-4e32-b5e2-41bcbb24f445_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueRemainingPerformanceObligation" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Performance obligations expected to be satisfied</link:label>
    <link:label id="lab_us-gaap_RevenueRemainingPerformanceObligation_label_en-US" xlink:label="lab_us-gaap_RevenueRemainingPerformanceObligation" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue, Remaining Performance Obligation, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligation" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligation"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligation" xlink:to="lab_us-gaap_RevenueRemainingPerformanceObligation" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_725c4b4a-72d6-43eb-b8b2-80d50cce8e9d_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Domestic</link:label>
    <link:label id="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_label_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income (Loss) from Continuing Operations before Income Taxes, Domestic</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:to="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CorporateDebtSecuritiesMember_538c4c31-91e9-4726-aeb6-300fa8fb6c1f_terseLabel_en-US" xlink:label="lab_us-gaap_CorporateDebtSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Corporate debt securities</link:label>
    <link:label id="lab_us-gaap_CorporateDebtSecuritiesMember_label_en-US" xlink:label="lab_us-gaap_CorporateDebtSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Corporate Debt Securities [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateDebtSecuritiesMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CorporateDebtSecuritiesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CorporateDebtSecuritiesMember" xlink:to="lab_us-gaap_CorporateDebtSecuritiesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NonoperatingIncomeExpenseAbstract_87494b32-7a88-4821-8fae-58caaf6a91b7_verboseLabel_en-US" xlink:label="lab_us-gaap_NonoperatingIncomeExpenseAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Interest and other income (expense), net:</link:label>
    <link:label id="lab_us-gaap_NonoperatingIncomeExpenseAbstract_label_en-US" xlink:label="lab_us-gaap_NonoperatingIncomeExpenseAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Nonoperating Income (Expense) [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NonoperatingIncomeExpenseAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NonoperatingIncomeExpenseAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NonoperatingIncomeExpenseAbstract" xlink:to="lab_us-gaap_NonoperatingIncomeExpenseAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueFromContractWithCustomerMember_857899c5-a59f-447f-8646-abddcc3675c9_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueFromContractWithCustomerMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue from Contract with Customer Benchmark</link:label>
    <link:label id="lab_us-gaap_RevenueFromContractWithCustomerMember_label_en-US" xlink:label="lab_us-gaap_RevenueFromContractWithCustomerMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue from Contract with Customer Benchmark [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerMember" xlink:to="lab_us-gaap_RevenueFromContractWithCustomerMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock_5d2de98c-a07e-43f1-8ea3-1eff8b6c3380_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, Maturity</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, Maturity [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityAddressAddressLine1_edbd98c7-cec6-4ab2-bc50-96f9e131998c_terseLabel_en-US" xlink:label="lab_dei_EntityAddressAddressLine1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, Address Line One</link:label>
    <link:label id="lab_dei_EntityAddressAddressLine1_label_en-US" xlink:label="lab_dei_EntityAddressAddressLine1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, Address Line One</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressAddressLine1" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityAddressAddressLine1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityAddressAddressLine1" xlink:to="lab_dei_EntityAddressAddressLine1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxAuthorityDomain_d1070ebf-49ec-42e0-a76d-37ff7b2daffd_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxAuthorityDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Authority [Domain]</link:label>
    <link:label id="lab_us-gaap_IncomeTaxAuthorityDomain_label_en-US" xlink:label="lab_us-gaap_IncomeTaxAuthorityDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Authority [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxAuthorityDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain" xlink:to="lab_us-gaap_IncomeTaxAuthorityDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ContractWithCustomerLiability_ab961ad2-d7a0-42cc-bf30-e4c4bfc9a072_terseLabel_en-US" xlink:label="lab_us-gaap_ContractWithCustomerLiability" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred revenue</link:label>
    <link:label id="lab_us-gaap_ContractWithCustomerLiability_label_en-US" xlink:label="lab_us-gaap_ContractWithCustomerLiability" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract with Customer, Liability</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiability" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ContractWithCustomerLiability"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ContractWithCustomerLiability" xlink:to="lab_us-gaap_ContractWithCustomerLiability" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ScheduleOfCertainTermsLineItemsLineItems_1a488244-8225-418a-b67c-8f9ae60e62f2_terseLabel_en-US" xlink:label="lab_calx_ScheduleOfCertainTermsLineItemsLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Certain Terms [Line Items]</link:label>
    <link:label id="lab_calx_ScheduleOfCertainTermsLineItemsLineItems_label_en-US" xlink:label="lab_calx_ScheduleOfCertainTermsLineItemsLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Certain Terms [Line Items] [Line Items]</link:label>
    <link:label id="lab_calx_ScheduleOfCertainTermsLineItemsLineItems_documentation_en-US" xlink:label="lab_calx_ScheduleOfCertainTermsLineItemsLineItems" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Certain Terms [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ScheduleOfCertainTermsLineItemsLineItems" xlink:href="calx-20221231.xsd#calx_ScheduleOfCertainTermsLineItemsLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ScheduleOfCertainTermsLineItemsLineItems" xlink:to="lab_calx_ScheduleOfCertainTermsLineItemsLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OverAllotmentOptionMember_f3aa3779-22ca-4cb5-b26e-b7dfcd457760_terseLabel_en-US" xlink:label="lab_us-gaap_OverAllotmentOptionMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Over-Allotment Option</link:label>
    <link:label id="lab_us-gaap_OverAllotmentOptionMember_label_en-US" xlink:label="lab_us-gaap_OverAllotmentOptionMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Over-Allotment Option [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OverAllotmentOptionMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OverAllotmentOptionMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OverAllotmentOptionMember" xlink:to="lab_us-gaap_OverAllotmentOptionMember" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_EuropeMember_6045fb4e-be91-45b2-a594-269b970d99ea_terseLabel_en-US" xlink:label="lab_srt_EuropeMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Americas excluding U.S.</link:label>
    <link:label id="lab_srt_EuropeMember_label_en-US" xlink:label="lab_srt_EuropeMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Europe [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_EuropeMember" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_EuropeMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_EuropeMember" xlink:to="lab_srt_EuropeMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxLiabilitiesNetAbstract_4951f5da-1132-4c7a-99f3-547553c60308_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred tax liabilities:</link:label>
    <link:label id="lab_us-gaap_DeferredTaxLiabilitiesNetAbstract_label_en-US" xlink:label="lab_us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Liabilities, Net [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxLiabilitiesNetAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="lab_us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount_9798908b-b5a9-49f5-ac91-798a8f5b2b05_terseLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (decrease) in valuation allowance</link:label>
    <link:label id="lab_us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount_label_en-US" xlink:label="lab_us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Valuation Allowance, Deferred Tax Asset, Increase (Decrease), Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount" xlink:to="lab_us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueDisclosuresAbstract_0f5efa5f-752c-40a1-925d-6b544bb10a37_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueDisclosuresAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Disclosures [Abstract]</link:label>
    <link:label id="lab_us-gaap_FairValueDisclosuresAbstract_label_en-US" xlink:label="lab_us-gaap_FairValueDisclosuresAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Disclosures [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueDisclosuresAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueDisclosuresAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueDisclosuresAbstract" xlink:to="lab_us-gaap_FairValueDisclosuresAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_dc3e7c4a-0f49-4e5a-a11b-7051b366831a_terseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrealized loss on available-for-sale marketable securities, net</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">OCI, Debt Securities, Available-for-Sale, Unrealized Holding Gain (Loss), before Adjustment, after Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:to="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock_d6079e00-f607-4020-9d37-c4edc60663d9_verboseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Liabilities</link:label>
    <link:label id="lab_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Accrued Liabilities [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_79cec7eb-5fe9-416c-b998-63722aeb9b3b_terseLabel_en-US" xlink:label="lab_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and Cash Equivalents [Domain]</link:label>
    <link:label id="lab_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_label_en-US" xlink:label="lab_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and Cash Equivalents [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:to="lab_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EquityAbstract_3a9c736d-02c6-483b-965f-bebd8d681246_terseLabel_en-US" xlink:label="lab_us-gaap_EquityAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Equity [Abstract]</link:label>
    <link:label id="lab_us-gaap_EquityAbstract_label_en-US" xlink:label="lab_us-gaap_EquityAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Equity [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EquityAbstract" xlink:to="lab_us-gaap_EquityAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityTaxIdentificationNumber_cbe7031a-96da-42a5-921c-ba9c757d3063_terseLabel_en-US" xlink:label="lab_dei_EntityTaxIdentificationNumber" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Tax Identification Number</link:label>
    <link:label id="lab_dei_EntityTaxIdentificationNumber_label_en-US" xlink:label="lab_dei_EntityTaxIdentificationNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Tax Identification Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityTaxIdentificationNumber" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityTaxIdentificationNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityTaxIdentificationNumber" xlink:to="lab_dei_EntityTaxIdentificationNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized_d6173bd3-d1d6-4eec-95a4-22420ff14fe9_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Number of shares authorized (in shares)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Number of Shares Authorized</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_PaymentsForFinancingArrangements_e5ddbbf0-41d5-4963-a1c9-f929230a1cb9_negatedTerseLabel_en-US" xlink:label="lab_calx_PaymentsForFinancingArrangements" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments related to financing arrangements</link:label>
    <link:label id="lab_calx_PaymentsForFinancingArrangements_label_en-US" xlink:label="lab_calx_PaymentsForFinancingArrangements" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments For Financing Arrangements</link:label>
    <link:label id="lab_calx_PaymentsForFinancingArrangements_documentation_en-US" xlink:label="lab_calx_PaymentsForFinancingArrangements" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments For Financing Arrangements</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PaymentsForFinancingArrangements" xlink:href="calx-20221231.xsd#calx_PaymentsForFinancingArrangements"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_PaymentsForFinancingArrangements" xlink:to="lab_calx_PaymentsForFinancingArrangements" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock_da6d6dd1-d593-4035-bfc4-9183656125d5_terseLabel_en-US" xlink:label="lab_calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash, Cash Equivalents, and Marketable Securities</link:label>
    <link:label id="lab_calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock_label_en-US" xlink:label="lab_calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash, Cash Equivalents, and Marketable Securities, Policy [Policy Text Block] [Policy Text Block]</link:label>
    <link:label id="lab_calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock_documentation_en-US" xlink:label="lab_calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Disclosure of accounting policy for cash and cash equivalents, and for investments in debt and equity securities that have readily determinable fair values (marketable securities).</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock" xlink:href="calx-20221231.xsd#calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock" xlink:to="lab_calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredIncomeTaxLiabilities_98036d1a-db9b-49e8-bdfa-abac139b90ac_negatedTotalLabel_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxLiabilities" xlink:role="http://www.xbrl.org/2009/role/negatedTotalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total deferred tax liabilities</link:label>
    <link:label id="lab_us-gaap_DeferredIncomeTaxLiabilities_label_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxLiabilities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Liabilities, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilities" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxLiabilities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredIncomeTaxLiabilities" xlink:to="lab_us-gaap_DeferredIncomeTaxLiabilities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueFromContractWithCustomerAbstract_bc068f99-0dbd-4d6c-9dee-28a92971a866_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueFromContractWithCustomerAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue from Contract with Customer [Abstract]</link:label>
    <link:label id="lab_us-gaap_RevenueFromContractWithCustomerAbstract_label_en-US" xlink:label="lab_us-gaap_RevenueFromContractWithCustomerAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue from Contract with Customer [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract" xlink:to="lab_us-gaap_RevenueFromContractWithCustomerAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CashMember_eed6ace0-43af-4d13-b7ec-ae777ae76903_terseLabel_en-US" xlink:label="lab_us-gaap_CashMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash</link:label>
    <link:label id="lab_us-gaap_CashMember_label_en-US" xlink:label="lab_us-gaap_CashMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CashMember" xlink:to="lab_us-gaap_CashMember" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_ConsolidatedEntitiesDomain_bfadfd9f-5111-4d95-9f17-b9da01f79454_terseLabel_en-US" xlink:label="lab_srt_ConsolidatedEntitiesDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Consolidated Entities [Domain]</link:label>
    <link:label id="lab_srt_ConsolidatedEntitiesDomain_label_en-US" xlink:label="lab_srt_ConsolidatedEntitiesDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Consolidated Entities [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ConsolidatedEntitiesDomain" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ConsolidatedEntitiesDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_ConsolidatedEntitiesDomain" xlink:to="lab_srt_ConsolidatedEntitiesDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward_5370d516-f279-4a06-b15b-996e533be828_verboseLabel_en-US" xlink:label="lab_us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product warranty activities [Roll Forward]</link:label>
    <link:label id="lab_us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward_label_en-US" xlink:label="lab_us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Movement in Standard and Extended Product Warranty Accrual, Increase (Decrease) [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward" xlink:to="lab_us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth_61824ec2-1a72-4d07-a2fb-fb80270f28d7_terseLabel_en-US" xlink:label="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-based compensation expense to be recognized in next twelve months</link:label>
    <link:label id="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth_label_en-US" xlink:label="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized Next Twelve Month</link:label>
    <link:label id="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth_documentation_en-US" xlink:label="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized Next Twelve Month</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth" xlink:href="calx-20221231.xsd#calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth" xlink:to="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock_d2590281-8395-4704-a740-53d81d2ec3de_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Effective Income Tax Rate Reconciliation</link:label>
    <link:label id="lab_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Effective Income Tax Rate Reconciliation [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_8e49d86d-06a4-466d-b9a4-56ffa5b46659_totalLabel_en-US" xlink:label="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net increase (decrease) in cash and cash equivalents</link:label>
    <link:label id="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_label_en-US" xlink:label="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Period Increase (Decrease), Including Exchange Rate Effect</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommercialPaperMember_c3d2e33b-49d7-484a-a9c4-1885959968b2_terseLabel_en-US" xlink:label="lab_us-gaap_CommercialPaperMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commercial paper</link:label>
    <link:label id="lab_us-gaap_CommercialPaperMember_label_en-US" xlink:label="lab_us-gaap_CommercialPaperMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commercial Paper [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommercialPaperMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommercialPaperMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommercialPaperMember" xlink:to="lab_us-gaap_CommercialPaperMember" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityCentralIndexKey_cafe8351-9ea5-446c-8d00-05da722e9267_terseLabel_en-US" xlink:label="lab_dei_EntityCentralIndexKey" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Central Index Key</link:label>
    <link:label id="lab_dei_EntityCentralIndexKey_label_en-US" xlink:label="lab_dei_EntityCentralIndexKey" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Central Index Key</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCentralIndexKey" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityCentralIndexKey"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityCentralIndexKey" xlink:to="lab_dei_EntityCentralIndexKey" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment_8efc5aa8-5fbf-48f8-a8ff-2dfbe23c634a_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">R&amp;D tax credits</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Nondeductible Expense, Research and Development, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree_8e654ab1-34ad-4a14-93a6-fb95b0db82c8_terseLabel_en-US" xlink:label="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-based compensation expense to be recognized three years after filing</link:label>
    <link:label id="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree_label_en-US" xlink:label="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized In Year Three</link:label>
    <link:label id="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree_documentation_en-US" xlink:label="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized In Year Three</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree" xlink:href="calx-20221231.xsd#calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree" xlink:to="lab_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueByMeasurementFrequencyAxis_0e377d5c-56bd-4b63-a622-115418cbc520_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueByMeasurementFrequencyAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Measurement Frequency [Axis]</link:label>
    <link:label id="lab_us-gaap_FairValueByMeasurementFrequencyAxis_label_en-US" xlink:label="lab_us-gaap_FairValueByMeasurementFrequencyAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Measurement Frequency [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByMeasurementFrequencyAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueByMeasurementFrequencyAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueByMeasurementFrequencyAxis" xlink:to="lab_us-gaap_FairValueByMeasurementFrequencyAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AllowanceForCreditLossMember_1d1932e1-963b-40f2-bfe4-b4b050a04488_terseLabel_en-US" xlink:label="lab_us-gaap_AllowanceForCreditLossMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Allowance for doubtful accounts</link:label>
    <link:label id="lab_us-gaap_AllowanceForCreditLossMember_label_en-US" xlink:label="lab_us-gaap_AllowanceForCreditLossMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Allowance, Credit Loss [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForCreditLossMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AllowanceForCreditLossMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AllowanceForCreditLossMember" xlink:to="lab_us-gaap_AllowanceForCreditLossMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_78c700cb-9435-4331-83ff-3913a4b40e8d_terseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Assets by Major Class [Axis]</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Assets by Major Class [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_f726ac31-2a9d-4e0c-b170-7b90b75aad2c_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Share-based Compensation Arrangements by Share-based Payment Award [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Share-Based Compensation Arrangements by Share-Based Payment Award [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable" xlink:to="lab_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ScheduleOfGrantDateFairValuesTableTextBlock_f1f75fb8-3b23-4de3-8a5b-a0c413136122_terseLabel_en-US" xlink:label="lab_calx_ScheduleOfGrantDateFairValuesTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Grant Date Fair Values</link:label>
    <link:label id="lab_calx_ScheduleOfGrantDateFairValuesTableTextBlock_label_en-US" xlink:label="lab_calx_ScheduleOfGrantDateFairValuesTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Grant Date Fair Values [Table Text Block]</link:label>
    <link:label id="lab_calx_ScheduleOfGrantDateFairValuesTableTextBlock_documentation_en-US" xlink:label="lab_calx_ScheduleOfGrantDateFairValuesTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Grant Date Fair Values [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ScheduleOfGrantDateFairValuesTableTextBlock" xlink:href="calx-20221231.xsd#calx_ScheduleOfGrantDateFairValuesTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ScheduleOfGrantDateFairValuesTableTextBlock" xlink:to="lab_calx_ScheduleOfGrantDateFairValuesTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes_e97f4cd6-9988-4162-a266-7597e87fcfcd_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Tax true-up</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Prior Year Income Taxes, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod_d95ea0b3-7201-48b2-9a30-a18bdb9ea199_terseLabel_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Number of shares authorized per purchase period</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod_label_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Number Of Shares Authorized Per Purchase Period</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod_documentation_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Number Of Shares Authorized Per Purchase Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod" xlink:to="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskCreditRisk_5e2c5221-5925-4c02-ba68-84c495245d7f_terseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskCreditRisk" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Credit Risk and Inventory Supplier Concentrations</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskCreditRisk_label_en-US" xlink:label="lab_us-gaap_ConcentrationRiskCreditRisk" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk, Credit Risk, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskCreditRisk" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskCreditRisk"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConcentrationRiskCreditRisk" xlink:to="lab_us-gaap_ConcentrationRiskCreditRisk" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherAccruedLiabilitiesCurrent_aa7250c8-eba7-4df8-9374-711d08d98197_verboseLabel_en-US" xlink:label="lab_us-gaap_OtherAccruedLiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other</link:label>
    <link:label id="lab_us-gaap_OtherAccruedLiabilitiesCurrent_label_en-US" xlink:label="lab_us-gaap_OtherAccruedLiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Accrued Liabilities, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAccruedLiabilitiesCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherAccruedLiabilitiesCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherAccruedLiabilitiesCurrent" xlink:to="lab_us-gaap_OtherAccruedLiabilitiesCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_CityAreaCode_26165cca-0d63-45f6-b3c4-3dfa51abcc3c_terseLabel_en-US" xlink:label="lab_dei_CityAreaCode" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">City Area Code</link:label>
    <link:label id="lab_dei_CityAreaCode_label_en-US" xlink:label="lab_dei_CityAreaCode" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">City Area Code</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_CityAreaCode" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_CityAreaCode"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_CityAreaCode" xlink:to="lab_dei_CityAreaCode" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccruedProfessionalFeesCurrent_f66f0c11-6c39-4256-bdff-6e9ee40690b9_terseLabel_en-US" xlink:label="lab_us-gaap_AccruedProfessionalFeesCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Professional and consulting fees</link:label>
    <link:label id="lab_us-gaap_AccruedProfessionalFeesCurrent_label_en-US" xlink:label="lab_us-gaap_AccruedProfessionalFeesCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Professional Fees, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedProfessionalFeesCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccruedProfessionalFeesCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccruedProfessionalFeesCurrent" xlink:to="lab_us-gaap_AccruedProfessionalFeesCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GeneralAndAdministrativeExpense_db2be653-caac-4076-aedf-69d7bb6efc32_verboseLabel_en-US" xlink:label="lab_us-gaap_GeneralAndAdministrativeExpense" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">General and administrative</link:label>
    <link:label id="lab_us-gaap_GeneralAndAdministrativeExpense_label_en-US" xlink:label="lab_us-gaap_GeneralAndAdministrativeExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">General and Administrative Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GeneralAndAdministrativeExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GeneralAndAdministrativeExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GeneralAndAdministrativeExpense" xlink:to="lab_us-gaap_GeneralAndAdministrativeExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AssetsAbstract_73b8927a-6015-4568-9ff3-9bad0d5bca84_verboseLabel_en-US" xlink:label="lab_us-gaap_AssetsAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">ASSETS</link:label>
    <link:label id="lab_us-gaap_AssetsAbstract_label_en-US" xlink:label="lab_us-gaap_AssetsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Assets [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AssetsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AssetsAbstract" xlink:to="lab_us-gaap_AssetsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CompensationAndRetirementDisclosureAbstract_e29ec91a-4e13-4d91-b69e-7ab08a2f897f_terseLabel_en-US" xlink:label="lab_us-gaap_CompensationAndRetirementDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Retirement Benefits [Abstract]</link:label>
    <link:label id="lab_us-gaap_CompensationAndRetirementDisclosureAbstract_label_en-US" xlink:label="lab_us-gaap_CompensationAndRetirementDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Retirement Benefits [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CompensationAndRetirementDisclosureAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CompensationAndRetirementDisclosureAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract" xlink:to="lab_us-gaap_CompensationAndRetirementDisclosureAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_SECSchedule1209ReserveProductReturnsMember_01d37061-f932-41e0-bdbc-a55f31c43171_terseLabel_en-US" xlink:label="lab_calx_SECSchedule1209ReserveProductReturnsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product return liability</link:label>
    <link:label id="lab_calx_SECSchedule1209ReserveProductReturnsMember_label_en-US" xlink:label="lab_calx_SECSchedule1209ReserveProductReturnsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Reserve, Product Returns [Member]</link:label>
    <link:label id="lab_calx_SECSchedule1209ReserveProductReturnsMember_documentation_en-US" xlink:label="lab_calx_SECSchedule1209ReserveProductReturnsMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Reserve established for amounts due that are unlikely to be received due to customer's return of products.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SECSchedule1209ReserveProductReturnsMember" xlink:href="calx-20221231.xsd#calx_SECSchedule1209ReserveProductReturnsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_SECSchedule1209ReserveProductReturnsMember" xlink:to="lab_calx_SECSchedule1209ReserveProductReturnsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StatementOfStockholdersEquityAbstract_87debdd2-b707-4d1d-99d2-86e00333fe79_terseLabel_en-US" xlink:label="lab_us-gaap_StatementOfStockholdersEquityAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement of Stockholders' Equity [Abstract]</link:label>
    <link:label id="lab_us-gaap_StatementOfStockholdersEquityAbstract_label_en-US" xlink:label="lab_us-gaap_StatementOfStockholdersEquityAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement of Stockholders' Equity [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfStockholdersEquityAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementOfStockholdersEquityAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StatementOfStockholdersEquityAbstract" xlink:to="lab_us-gaap_StatementOfStockholdersEquityAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SubsidiarySaleOfStockAxis_5cef0c30-82e1-40b8-a32a-35d64cc17b15_terseLabel_en-US" xlink:label="lab_us-gaap_SubsidiarySaleOfStockAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sale of Stock [Axis]</link:label>
    <link:label id="lab_us-gaap_SubsidiarySaleOfStockAxis_label_en-US" xlink:label="lab_us-gaap_SubsidiarySaleOfStockAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sale of Stock [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsidiarySaleOfStockAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubsidiarySaleOfStockAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SubsidiarySaleOfStockAxis" xlink:to="lab_us-gaap_SubsidiarySaleOfStockAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities_a30a6c36-cf84-42f0-bb4b-3d24a45e7ff5_verboseLabel_en-US" xlink:label="lab_us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maturities of marketable securities</link:label>
    <link:label id="lab_us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities_label_en-US" xlink:label="lab_us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Proceeds from Maturities, Prepayments and Calls of Debt Securities, Available-for-Sale</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:to="lab_us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueRemainingPerformanceObligationPercentage_93ef55c4-0514-4f75-a3de-68fbac198008_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueRemainingPerformanceObligationPercentage" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Remaining performance obligation, percentage</link:label>
    <link:label id="lab_us-gaap_RevenueRemainingPerformanceObligationPercentage_label_en-US" xlink:label="lab_us-gaap_RevenueRemainingPerformanceObligationPercentage" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue, Remaining Performance Obligation, Percentage</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationPercentage" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationPercentage"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationPercentage" xlink:to="lab_us-gaap_RevenueRemainingPerformanceObligationPercentage" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_8e7385b9-c0a4-4b2f-bbd0-3daeb2aa56b9_verboseLabel_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Financing activities:</link:label>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_label_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Cash Provided by (Used in) Financing Activities [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="lab_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock_e38300a5-d295-40f2-8381-8f196818c3d7_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Costs, Capitalized, Prepaid, and Other Assets Disclosure</link:label>
    <link:label id="lab_us-gaap_DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Costs, Capitalized, Prepaid, and Other Assets Disclosure [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock" xlink:to="lab_us-gaap_DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BusinessDescriptionAndAccountingPoliciesTextBlock_cb9c4885-e00f-4871-9855-ac5312fbc63d_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessDescriptionAndAccountingPoliciesTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Description of Business and Significant Accounting Policies</link:label>
    <link:label id="lab_us-gaap_BusinessDescriptionAndAccountingPoliciesTextBlock_label_en-US" xlink:label="lab_us-gaap_BusinessDescriptionAndAccountingPoliciesTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Description and Accounting Policies [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessDescriptionAndAccountingPoliciesTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BusinessDescriptionAndAccountingPoliciesTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessDescriptionAndAccountingPoliciesTextBlock" xlink:to="lab_us-gaap_BusinessDescriptionAndAccountingPoliciesTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensation_069960fa-59d4-49cd-b237-eb47ca50e815_verboseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensation" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-based compensation</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensation_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensation" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Payment Arrangement, Noncash Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensation" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensation"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensation" xlink:to="lab_us-gaap_ShareBasedCompensation" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_70e8534a-b5fb-44fc-891a-428071367216_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted-average grant date fair value per share, stock options (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherLiabilitiesNoncurrent_5b54dd03-6cbb-4d8d-8cc7-11c387b07d9e_verboseLabel_en-US" xlink:label="lab_us-gaap_OtherLiabilitiesNoncurrent" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other long-term liabilities</link:label>
    <link:label id="lab_us-gaap_OtherLiabilitiesNoncurrent_label_en-US" xlink:label="lab_us-gaap_OtherLiabilitiesNoncurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Liabilities, Noncurrent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherLiabilitiesNoncurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherLiabilitiesNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherLiabilitiesNoncurrent" xlink:to="lab_us-gaap_OtherLiabilitiesNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts_2a120e69-9f36-4a73-a600-5c90d4d17f97_terseLabel_en-US" xlink:label="lab_calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Capitalized R&amp;D</link:label>
    <link:label id="lab_calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts_label_en-US" xlink:label="lab_calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Deferred Expense, Capitalized Research and Development Costs</link:label>
    <link:label id="lab_calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts_documentation_en-US" xlink:label="lab_calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Deferred Expense, Capitalized Research and Development Costs</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts" xlink:href="calx-20221231.xsd#calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts" xlink:to="lab_calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_c1a7a8ee-662c-4607-aefb-984cfb6f311e_negatedLabel_en-US" xlink:label="lab_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Purchases of property and equipment</link:label>
    <link:label id="lab_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_label_en-US" xlink:label="lab_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments to Acquire Property, Plant, and Equipment</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:to="lab_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares_3ad37668-a27c-4653-850a-9f5f1ae97906_terseLabel_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares available for issuance, additional shares (in shares)</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares_label_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share Based Compensation Arrangement By Share Based Payment Award Number Of Shares Available For Grant, Additional Shares</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares_documentation_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share Based Compensation Arrangement By Share Based Payment Award Number Of Shares Available For Grant, Additional Shares</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares" xlink:to="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ResearchAndDevelopmentExpenseMember_a216d1f0-e023-44d1-a4a0-da5d9c73a083_verboseLabel_en-US" xlink:label="lab_us-gaap_ResearchAndDevelopmentExpenseMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Research and development</link:label>
    <link:label id="lab_us-gaap_ResearchAndDevelopmentExpenseMember_label_en-US" xlink:label="lab_us-gaap_ResearchAndDevelopmentExpenseMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Research and Development Expense [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpenseMember" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ResearchAndDevelopmentExpenseMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ResearchAndDevelopmentExpenseMember" xlink:to="lab_us-gaap_ResearchAndDevelopmentExpenseMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted_e647956c-cb81-4d3b-8ba3-fa9663e47ae0_terseLabel_en-US" xlink:label="lab_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Purchase commitments</link:label>
    <link:label id="lab_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted_label_en-US" xlink:label="lab_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Purchase Commitment, Remaining Minimum Amount Committed</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted" xlink:to="lab_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_IncomeTaxesTable_bba3f07a-07ea-46f7-a004-fe1fcb7aac25_terseLabel_en-US" xlink:label="lab_calx_IncomeTaxesTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Taxes</link:label>
    <link:label id="lab_calx_IncomeTaxesTable_label_en-US" xlink:label="lab_calx_IncomeTaxesTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Taxes [Table]</link:label>
    <link:label id="lab_calx_IncomeTaxesTable_documentation_en-US" xlink:label="lab_calx_IncomeTaxesTable" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Taxes [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_IncomeTaxesTable" xlink:href="calx-20221231.xsd#calx_IncomeTaxesTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_IncomeTaxesTable" xlink:to="lab_calx_IncomeTaxesTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock_0169b031-ec3e-4bc3-b225-cf850fe5f86d_verboseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Net Loss Per Share</link:label>
    <link:label id="lab_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_LesseeOperatingLeaseLiabilityTableTextBlock_d8b67c9a-3f9a-4dd8-8014-709a7d128595_terseLabel_en-US" xlink:label="lab_calx_LesseeOperatingLeaseLiabilityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Leases</link:label>
    <link:label id="lab_calx_LesseeOperatingLeaseLiabilityTableTextBlock_label_en-US" xlink:label="lab_calx_LesseeOperatingLeaseLiabilityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease Liability [Table Text Block]</link:label>
    <link:label id="lab_calx_LesseeOperatingLeaseLiabilityTableTextBlock_documentation_en-US" xlink:label="lab_calx_LesseeOperatingLeaseLiabilityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease Liability</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_LesseeOperatingLeaseLiabilityTableTextBlock" xlink:href="calx-20221231.xsd#calx_LesseeOperatingLeaseLiabilityTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_LesseeOperatingLeaseLiabilityTableTextBlock" xlink:to="lab_calx_LesseeOperatingLeaseLiabilityTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_NameOfMajorCustomerDomain_72ec1329-1384-49c6-89e9-05251e8d471e_terseLabel_en-US" xlink:label="lab_srt_NameOfMajorCustomerDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer [Domain]</link:label>
    <link:label id="lab_srt_NameOfMajorCustomerDomain_label_en-US" xlink:label="lab_srt_NameOfMajorCustomerDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_NameOfMajorCustomerDomain" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_NameOfMajorCustomerDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_NameOfMajorCustomerDomain" xlink:to="lab_srt_NameOfMajorCustomerDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent_a5903c74-5dde-4dc6-b8e6-1905cb02e176_terseLabel_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares award target achievement performance threshold, percent</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent_label_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Shares Award Target Achievement Performance Threshold, Percent</link:label>
    <link:label id="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent_documentation_en-US" xlink:label="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-Based Compensation Arrangement By Share-Based Payment Award, Shares Award Target Achievement Performance Threshold, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent" xlink:to="lab_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent" xlink:type="arc" order="1"/>
  </link:labelLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.PRE
<SEQUENCE>11
<FILENAME>calx-20221231_pre.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION PRESENTATION LINKBASE DOCUMENT
<TEXT>
<XBRL>
<?xml version="1.0" encoding="UTF-8"?>

<!--XBRL Document Created with Wdesk from Workiva-->
<!--Copyright 2023 Workiva-->
<!--r:65ceb81b-1301-4d03-a3b5-a19a3f419a3b,g:9d9ffaaa-0d49-4a33-8fc4-ed994a16f30c-->
<link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://www.calix.com/role/Cover" xlink:type="simple" xlink:href="calx-20221231.xsd#Cover"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/Cover" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_CoverAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentType_fc0c9251-30d3-4b23-9858-d13f33b715c8" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_DocumentType"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_DocumentType_fc0c9251-30d3-4b23-9858-d13f33b715c8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentAnnualReport_4798404d-d8e1-4554-aec5-e42b67d2f56a" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_DocumentAnnualReport"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_DocumentAnnualReport_4798404d-d8e1-4554-aec5-e42b67d2f56a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentPeriodEndDate_43db604b-571d-4ddb-8f56-072d15e4ad8b" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_DocumentPeriodEndDate"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_DocumentPeriodEndDate_43db604b-571d-4ddb-8f56-072d15e4ad8b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_CurrentFiscalYearEndDate_d1db5efa-fd94-467b-842d-7c18188c1fce" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_CurrentFiscalYearEndDate"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_CurrentFiscalYearEndDate_d1db5efa-fd94-467b-842d-7c18188c1fce" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentTransitionReport_f18ff1a6-7e60-416a-81fc-3ace685ba187" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_DocumentTransitionReport"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_DocumentTransitionReport_f18ff1a6-7e60-416a-81fc-3ace685ba187" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityFileNumber_d8e2a8ac-efe3-4515-9eab-9fd7f13fcc61" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityFileNumber"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityFileNumber_d8e2a8ac-efe3-4515-9eab-9fd7f13fcc61" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityRegistrantName_1187e426-e909-4e07-b23e-cbe5a060322b" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityRegistrantName"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityRegistrantName_1187e426-e909-4e07-b23e-cbe5a060322b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityIncorporationStateCountryCode_d2812618-184e-405e-b5d1-adb5d2e21efa" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityIncorporationStateCountryCode"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityIncorporationStateCountryCode_d2812618-184e-405e-b5d1-adb5d2e21efa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityTaxIdentificationNumber_23a80ede-b050-49a1-9818-da587e691df0" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityTaxIdentificationNumber"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityTaxIdentificationNumber_23a80ede-b050-49a1-9818-da587e691df0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressAddressLine1_001cb9cf-3804-4e20-8e4c-cad0a900be5f" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityAddressAddressLine1"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityAddressAddressLine1_001cb9cf-3804-4e20-8e4c-cad0a900be5f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressCityOrTown_7278dc4e-c59e-41b6-ada9-d90f6d6cd722" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityAddressCityOrTown"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityAddressCityOrTown_7278dc4e-c59e-41b6-ada9-d90f6d6cd722" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressStateOrProvince_d03fd6ef-f921-4475-be04-e6eb5e473a53" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityAddressStateOrProvince"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityAddressStateOrProvince_d03fd6ef-f921-4475-be04-e6eb5e473a53" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressPostalZipCode_e0b4cdeb-1265-458a-801a-cb67964b05fb" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityAddressPostalZipCode"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityAddressPostalZipCode_e0b4cdeb-1265-458a-801a-cb67964b05fb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_CityAreaCode_9f90847d-decf-4cf9-9d33-e618a32a6bb4" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_CityAreaCode"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_CityAreaCode_9f90847d-decf-4cf9-9d33-e618a32a6bb4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_LocalPhoneNumber_b3bbc489-9aad-4461-9be3-c0227241b49c" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_LocalPhoneNumber"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_LocalPhoneNumber_b3bbc489-9aad-4461-9be3-c0227241b49c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_Security12bTitle_afa606cd-ae37-4c96-9fef-41ce959aaea4" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_Security12bTitle"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_Security12bTitle_afa606cd-ae37-4c96-9fef-41ce959aaea4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_TradingSymbol_e7d92740-cd8d-4736-acc5-2478d332f675" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_TradingSymbol"/>
    <link:presentationArc order="17" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_TradingSymbol_e7d92740-cd8d-4736-acc5-2478d332f675" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_SecurityExchangeName_63461c63-654a-46c6-b0c6-7e8f8e69454d" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_SecurityExchangeName"/>
    <link:presentationArc order="18" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_SecurityExchangeName_63461c63-654a-46c6-b0c6-7e8f8e69454d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityWellKnownSeasonedIssuer_37a2340e-6855-4cb3-ab29-6c45b8f4a065" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityWellKnownSeasonedIssuer"/>
    <link:presentationArc order="19" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityWellKnownSeasonedIssuer_37a2340e-6855-4cb3-ab29-6c45b8f4a065" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityVoluntaryFilers_8ecafaaa-73f8-4b82-870a-cace3031c377" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityVoluntaryFilers"/>
    <link:presentationArc order="20" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityVoluntaryFilers_8ecafaaa-73f8-4b82-870a-cace3031c377" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCurrentReportingStatus_74bfe05f-f4e6-4a3d-85df-43f34bd22bec" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityCurrentReportingStatus"/>
    <link:presentationArc order="21" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityCurrentReportingStatus_74bfe05f-f4e6-4a3d-85df-43f34bd22bec" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityInteractiveDataCurrent_63954a44-e39b-4587-88a7-3010ada9564a" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityInteractiveDataCurrent"/>
    <link:presentationArc order="22" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityInteractiveDataCurrent_63954a44-e39b-4587-88a7-3010ada9564a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityFilerCategory_88d50181-841c-457b-a7a1-6a492e4c7554" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityFilerCategory"/>
    <link:presentationArc order="23" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityFilerCategory_88d50181-841c-457b-a7a1-6a492e4c7554" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntitySmallBusiness_934351e5-2235-44c2-8980-3861fce0d433" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntitySmallBusiness"/>
    <link:presentationArc order="24" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntitySmallBusiness_934351e5-2235-44c2-8980-3861fce0d433" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityEmergingGrowthCompany_ea1e4d26-2981-4b73-afaa-5ea4748d99e9" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityEmergingGrowthCompany"/>
    <link:presentationArc order="25" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityEmergingGrowthCompany_ea1e4d26-2981-4b73-afaa-5ea4748d99e9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_IcfrAuditorAttestationFlag_aae38965-5c2b-41ba-a546-0b4b6c80380c" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_IcfrAuditorAttestationFlag"/>
    <link:presentationArc order="26" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_IcfrAuditorAttestationFlag_aae38965-5c2b-41ba-a546-0b4b6c80380c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityShellCompany_ce10a9f3-a1cb-4bfc-9fce-9e71916994c3" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityShellCompany"/>
    <link:presentationArc order="27" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityShellCompany_ce10a9f3-a1cb-4bfc-9fce-9e71916994c3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityPublicFloat_456e72ea-d41f-412e-ae9b-c5190ea889fd" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityPublicFloat"/>
    <link:presentationArc order="28" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityPublicFloat_456e72ea-d41f-412e-ae9b-c5190ea889fd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCommonStockSharesOutstanding_b2e4fda1-6e88-4e7a-9fd2-6f7e114282a8" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityCommonStockSharesOutstanding"/>
    <link:presentationArc order="29" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityCommonStockSharesOutstanding_b2e4fda1-6e88-4e7a-9fd2-6f7e114282a8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCentralIndexKey_5d26b34a-9f87-4003-a616-b93c450e63b0" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_EntityCentralIndexKey"/>
    <link:presentationArc order="30" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_EntityCentralIndexKey_5d26b34a-9f87-4003-a616-b93c450e63b0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AmendmentFlag_ef7e60dc-13c1-48c3-862c-2bbafdb727c3" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_AmendmentFlag"/>
    <link:presentationArc order="31" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_AmendmentFlag_ef7e60dc-13c1-48c3-862c-2bbafdb727c3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentFiscalYearFocus_70d630a0-1a20-4a62-b013-97e9df90237a" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_DocumentFiscalYearFocus"/>
    <link:presentationArc order="32" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_DocumentFiscalYearFocus_70d630a0-1a20-4a62-b013-97e9df90237a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentFiscalPeriodFocus_9cfc5f58-26b8-4eb5-a414-6ebb2fe94a39" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_DocumentFiscalPeriodFocus"/>
    <link:presentationArc order="33" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_DocumentFiscalPeriodFocus_9cfc5f58-26b8-4eb5-a414-6ebb2fe94a39" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentsIncorporatedByReferenceTextBlock_5e11fb61-4ed4-4ea5-96ea-5cd1c7f9995b" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_DocumentsIncorporatedByReferenceTextBlock"/>
    <link:presentationArc order="34" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_5461d085-f70b-427f-8fe3-e7b84598a381" xlink:to="loc_dei_DocumentsIncorporatedByReferenceTextBlock_5e11fb61-4ed4-4ea5-96ea-5cd1c7f9995b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/AuditInformation" xlink:type="simple" xlink:href="calx-20221231.xsd#AuditInformation"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/AuditInformation" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_calx_AuditInformationAbstract_15f0f231-b910-4023-8d7f-35adf8e5e9cf" xlink:href="calx-20221231.xsd#calx_AuditInformationAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AuditorName_68558e9a-1b28-47ce-9812-7ef1fd1c4198" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_AuditorName"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_AuditInformationAbstract_15f0f231-b910-4023-8d7f-35adf8e5e9cf" xlink:to="loc_dei_AuditorName_68558e9a-1b28-47ce-9812-7ef1fd1c4198" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AuditorLocation_3ed0676f-935c-4266-9e26-63ab7a2801f1" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_AuditorLocation"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_AuditInformationAbstract_15f0f231-b910-4023-8d7f-35adf8e5e9cf" xlink:to="loc_dei_AuditorLocation_3ed0676f-935c-4266-9e26-63ab7a2801f1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AuditorFirmId_85f53ec9-657c-49c7-bb5c-42572243a201" xlink:href="https://xbrl.sec.gov/dei/2022/dei-2022.xsd#dei_AuditorFirmId"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_AuditInformationAbstract_15f0f231-b910-4023-8d7f-35adf8e5e9cf" xlink:to="loc_dei_AuditorFirmId_85f53ec9-657c-49c7-bb5c-42572243a201" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/ConsolidatedBalanceSheets" xlink:type="simple" xlink:href="calx-20221231.xsd#ConsolidatedBalanceSheets"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/ConsolidatedBalanceSheets" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfFinancialPositionAbstract_264f3ead-43e6-4d01-a91c-814dd8a99679" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementOfFinancialPositionAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsAbstract_42ef9808-fb9c-40d0-995c-1f2acae5714e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AssetsAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_264f3ead-43e6-4d01-a91c-814dd8a99679" xlink:to="loc_us-gaap_AssetsAbstract_42ef9808-fb9c-40d0-995c-1f2acae5714e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrentAbstract_eb6e5f81-cf4d-4f33-b282-d857a3b89692" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AssetsCurrentAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_42ef9808-fb9c-40d0-995c-1f2acae5714e" xlink:to="loc_us-gaap_AssetsCurrentAbstract_eb6e5f81-cf4d-4f33-b282-d857a3b89692" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_49cebf97-3a79-4cec-9e5f-4ebbdce7aefd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsCurrentAbstract_eb6e5f81-cf4d-4f33-b282-d857a3b89692" xlink:to="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_49cebf97-3a79-4cec-9e5f-4ebbdce7aefd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_705822ff-2dab-426f-b9d6-9b7695ca111b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsCurrentAbstract_eb6e5f81-cf4d-4f33-b282-d857a3b89692" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_705822ff-2dab-426f-b9d6-9b7695ca111b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableNetCurrent_112f3e29-b9cb-4dcc-9b26-5df1b414f93b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsReceivableNetCurrent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsCurrentAbstract_eb6e5f81-cf4d-4f33-b282-d857a3b89692" xlink:to="loc_us-gaap_AccountsReceivableNetCurrent_112f3e29-b9cb-4dcc-9b26-5df1b414f93b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryNet_a3f905a6-2e06-4156-863e-9db414596962" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InventoryNet"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsCurrentAbstract_eb6e5f81-cf4d-4f33-b282-d857a3b89692" xlink:to="loc_us-gaap_InventoryNet_a3f905a6-2e06-4156-863e-9db414596962" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_10ccdb72-8939-4415-86ef-18404bbf58fd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsCurrentAbstract_eb6e5f81-cf4d-4f33-b282-d857a3b89692" xlink:to="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_10ccdb72-8939-4415-86ef-18404bbf58fd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrent_f6a744b7-2a2c-48c9-a848-6bafce4c4dff" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AssetsCurrent"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsCurrentAbstract_eb6e5f81-cf4d-4f33-b282-d857a3b89692" xlink:to="loc_us-gaap_AssetsCurrent_f6a744b7-2a2c-48c9-a848-6bafce4c4dff" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_5b4fe4f0-354f-4132-9bb4-bfaed190ca1e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_42ef9808-fb9c-40d0-995c-1f2acae5714e" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentNet_5b4fe4f0-354f-4132-9bb4-bfaed190ca1e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseRightOfUseAsset_fe1697e9-026b-4023-a913-5449561ee82f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseRightOfUseAsset"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_42ef9808-fb9c-40d0-995c-1f2acae5714e" xlink:to="loc_us-gaap_OperatingLeaseRightOfUseAsset_fe1697e9-026b-4023-a913-5449561ee82f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxAssetsNet_0cd630a0-9da7-4810-871b-446bd2beab9b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxAssetsNet"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_42ef9808-fb9c-40d0-995c-1f2acae5714e" xlink:to="loc_us-gaap_DeferredIncomeTaxAssetsNet_0cd630a0-9da7-4810-871b-446bd2beab9b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_e3af6a78-4b8a-497d-a1ee-f01a4b32f704" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Goodwill"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_42ef9808-fb9c-40d0-995c-1f2acae5714e" xlink:to="loc_us-gaap_Goodwill_e3af6a78-4b8a-497d-a1ee-f01a4b32f704" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAssetsNoncurrent_3932ddcd-2751-43d5-9799-ab5889c0d3ec" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherAssetsNoncurrent"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_42ef9808-fb9c-40d0-995c-1f2acae5714e" xlink:to="loc_us-gaap_OtherAssetsNoncurrent_3932ddcd-2751-43d5-9799-ab5889c0d3ec" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Assets_5c0f9662-294b-49e8-b904-23e332a20f31" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Assets"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_42ef9808-fb9c-40d0-995c-1f2acae5714e" xlink:to="loc_us-gaap_Assets_5c0f9662-294b-49e8-b904-23e332a20f31" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_aae9a4aa-34fb-40ec-91f3-0f248566cd4b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LiabilitiesAndStockholdersEquityAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_264f3ead-43e6-4d01-a91c-814dd8a99679" xlink:to="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_aae9a4aa-34fb-40ec-91f3-0f248566cd4b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrentAbstract_cd89f298-8969-4582-bebf-398c474d280c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LiabilitiesCurrentAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_aae9a4aa-34fb-40ec-91f3-0f248566cd4b" xlink:to="loc_us-gaap_LiabilitiesCurrentAbstract_cd89f298-8969-4582-bebf-398c474d280c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsPayableCurrent_7eed26bd-47c3-46b2-85a3-b612df44b809" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsPayableCurrent"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesCurrentAbstract_cd89f298-8969-4582-bebf-398c474d280c" xlink:to="loc_us-gaap_AccountsPayableCurrent_7eed26bd-47c3-46b2-85a3-b612df44b809" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent_2dc5eb13-ec44-4694-91d3-5d20a26fc39e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccruedLiabilitiesCurrent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesCurrentAbstract_cd89f298-8969-4582-bebf-398c474d280c" xlink:to="loc_us-gaap_AccruedLiabilitiesCurrent_2dc5eb13-ec44-4694-91d3-5d20a26fc39e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityCurrent_54bf32c3-13ab-47d1-b908-e931c41615f8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ContractWithCustomerLiabilityCurrent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesCurrentAbstract_cd89f298-8969-4582-bebf-398c474d280c" xlink:to="loc_us-gaap_ContractWithCustomerLiabilityCurrent_54bf32c3-13ab-47d1-b908-e931c41615f8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrent_234f9218-0f71-4b58-95bf-3668b9780605" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LiabilitiesCurrent"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesCurrentAbstract_cd89f298-8969-4582-bebf-398c474d280c" xlink:to="loc_us-gaap_LiabilitiesCurrent_234f9218-0f71-4b58-95bf-3668b9780605" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityNoncurrent_51c2db10-2af7-4a13-92d8-262025a5596e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ContractWithCustomerLiabilityNoncurrent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_aae9a4aa-34fb-40ec-91f3-0f248566cd4b" xlink:to="loc_us-gaap_ContractWithCustomerLiabilityNoncurrent_51c2db10-2af7-4a13-92d8-262025a5596e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_b2b7e22f-1ced-4d9a-9d5b-683c9764b145" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_aae9a4aa-34fb-40ec-91f3-0f248566cd4b" xlink:to="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_b2b7e22f-1ced-4d9a-9d5b-683c9764b145" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherLiabilitiesNoncurrent_f1d55cef-deaf-4bd1-8773-9875d98888ad" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherLiabilitiesNoncurrent"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_aae9a4aa-34fb-40ec-91f3-0f248566cd4b" xlink:to="loc_us-gaap_OtherLiabilitiesNoncurrent_f1d55cef-deaf-4bd1-8773-9875d98888ad" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Liabilities_9d770940-6d0e-4619-9a71-c3343db83318" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Liabilities"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_aae9a4aa-34fb-40ec-91f3-0f248566cd4b" xlink:to="loc_us-gaap_Liabilities_9d770940-6d0e-4619-9a71-c3343db83318" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingencies_244cf1f1-15d4-4647-b4fc-2ed2d39b5348" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommitmentsAndContingencies"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_aae9a4aa-34fb-40ec-91f3-0f248566cd4b" xlink:to="loc_us-gaap_CommitmentsAndContingencies_244cf1f1-15d4-4647-b4fc-2ed2d39b5348" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquityAbstract_8358cae7-6363-4d53-b58f-90e0cef823bc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockholdersEquityAbstract"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_aae9a4aa-34fb-40ec-91f3-0f248566cd4b" xlink:to="loc_us-gaap_StockholdersEquityAbstract_8358cae7-6363-4d53-b58f-90e0cef823bc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockValue_11c9ace8-031d-46c1-8661-2e5ef6f2a62e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockValue"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StockholdersEquityAbstract_8358cae7-6363-4d53-b58f-90e0cef823bc" xlink:to="loc_us-gaap_PreferredStockValue_11c9ace8-031d-46c1-8661-2e5ef6f2a62e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockValue_ff557395-b2f2-405e-b110-fee2bf86aa67" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockValue"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StockholdersEquityAbstract_8358cae7-6363-4d53-b58f-90e0cef823bc" xlink:to="loc_us-gaap_CommonStockValue_ff557395-b2f2-405e-b110-fee2bf86aa67" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalCommonStock_bba55f7c-9b7f-48dc-8cf7-cfd97c3ff42a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AdditionalPaidInCapitalCommonStock"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StockholdersEquityAbstract_8358cae7-6363-4d53-b58f-90e0cef823bc" xlink:to="loc_us-gaap_AdditionalPaidInCapitalCommonStock_bba55f7c-9b7f-48dc-8cf7-cfd97c3ff42a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_66313641-62b6-407f-909d-2b5bd1119857" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StockholdersEquityAbstract_8358cae7-6363-4d53-b58f-90e0cef823bc" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_66313641-62b6-407f-909d-2b5bd1119857" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsAccumulatedDeficit_a7dd30d3-1f84-406d-8a90-835b301b8450" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RetainedEarningsAccumulatedDeficit"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StockholdersEquityAbstract_8358cae7-6363-4d53-b58f-90e0cef823bc" xlink:to="loc_us-gaap_RetainedEarningsAccumulatedDeficit_a7dd30d3-1f84-406d-8a90-835b301b8450" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_6ee18427-fdc1-4c30-9006-fc23ff3479e8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockholdersEquity"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StockholdersEquityAbstract_8358cae7-6363-4d53-b58f-90e0cef823bc" xlink:to="loc_us-gaap_StockholdersEquity_6ee18427-fdc1-4c30-9006-fc23ff3479e8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesAndStockholdersEquity_40c43ff0-5042-42a6-acc8-b4761bc5aa70" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LiabilitiesAndStockholdersEquity"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_aae9a4aa-34fb-40ec-91f3-0f248566cd4b" xlink:to="loc_us-gaap_LiabilitiesAndStockholdersEquity_40c43ff0-5042-42a6-acc8-b4761bc5aa70" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/ConsolidatedBalanceSheetsParenthetical" xlink:type="simple" xlink:href="calx-20221231.xsd#ConsolidatedBalanceSheetsParenthetical"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/ConsolidatedBalanceSheetsParenthetical" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfFinancialPositionAbstract_833a22b4-6a8f-43b5-b5dd-23f049170d8e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementOfFinancialPositionAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockParOrStatedValuePerShare_c455a021-7a6a-4255-b296-3810f93902ac" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockParOrStatedValuePerShare"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_833a22b4-6a8f-43b5-b5dd-23f049170d8e" xlink:to="loc_us-gaap_PreferredStockParOrStatedValuePerShare_c455a021-7a6a-4255-b296-3810f93902ac" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesAuthorized_375ea712-4b27-4bee-976b-28f5ed9825f2" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockSharesAuthorized"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_833a22b4-6a8f-43b5-b5dd-23f049170d8e" xlink:to="loc_us-gaap_PreferredStockSharesAuthorized_375ea712-4b27-4bee-976b-28f5ed9825f2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesIssued_9453dabc-b2dd-46e8-9922-1cc913fb2e09" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockSharesIssued"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_833a22b4-6a8f-43b5-b5dd-23f049170d8e" xlink:to="loc_us-gaap_PreferredStockSharesIssued_9453dabc-b2dd-46e8-9922-1cc913fb2e09" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesOutstanding_810b23d2-16ec-4a6a-b9cc-9583e8c750de" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockSharesOutstanding"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_833a22b4-6a8f-43b5-b5dd-23f049170d8e" xlink:to="loc_us-gaap_PreferredStockSharesOutstanding_810b23d2-16ec-4a6a-b9cc-9583e8c750de" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockParOrStatedValuePerShare_b14c3bbb-e75e-4421-a837-d665e46773dc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockParOrStatedValuePerShare"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_833a22b4-6a8f-43b5-b5dd-23f049170d8e" xlink:to="loc_us-gaap_CommonStockParOrStatedValuePerShare_b14c3bbb-e75e-4421-a837-d665e46773dc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesAuthorized_19b29f68-9bec-465c-a20f-655605258f31" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockSharesAuthorized"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_833a22b4-6a8f-43b5-b5dd-23f049170d8e" xlink:to="loc_us-gaap_CommonStockSharesAuthorized_19b29f68-9bec-465c-a20f-655605258f31" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesIssued_6461b6e3-f7fe-4913-9b70-dc8d8636723c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockSharesIssued"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_833a22b4-6a8f-43b5-b5dd-23f049170d8e" xlink:to="loc_us-gaap_CommonStockSharesIssued_6461b6e3-f7fe-4913-9b70-dc8d8636723c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesOutstanding_79f3871e-c54a-4e8c-a073-86e1e15ad30b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockSharesOutstanding"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_833a22b4-6a8f-43b5-b5dd-23f049170d8e" xlink:to="loc_us-gaap_CommonStockSharesOutstanding_79f3871e-c54a-4e8c-a073-86e1e15ad30b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss" xlink:type="simple" xlink:href="calx-20221231.xsd#ConsolidatedStatementsofComprehensiveIncomeLoss"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementAbstract_5f6cb8ab-74a3-4cd2-8ac1-78ad41f2cb61" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeStatementAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_c15a1d6d-e8e1-4b34-a509-787960a0d6b6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_5f6cb8ab-74a3-4cd2-8ac1-78ad41f2cb61" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_c15a1d6d-e8e1-4b34-a509-787960a0d6b6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CostOfGoodsAndServicesSold_079af02e-fdd5-477e-aead-cd7f5c239ea5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CostOfGoodsAndServicesSold"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_5f6cb8ab-74a3-4cd2-8ac1-78ad41f2cb61" xlink:to="loc_us-gaap_CostOfGoodsAndServicesSold_079af02e-fdd5-477e-aead-cd7f5c239ea5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GrossProfit_ef07cf5d-56c4-41d3-82ae-ef56ef294030" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GrossProfit"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_5f6cb8ab-74a3-4cd2-8ac1-78ad41f2cb61" xlink:to="loc_us-gaap_GrossProfit_ef07cf5d-56c4-41d3-82ae-ef56ef294030" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingExpensesAbstract_485c6e8c-b41a-4484-9f83-1923e68a680b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingExpensesAbstract"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_5f6cb8ab-74a3-4cd2-8ac1-78ad41f2cb61" xlink:to="loc_us-gaap_OperatingExpensesAbstract_485c6e8c-b41a-4484-9f83-1923e68a680b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SellingAndMarketingExpense_206bfd51-6d9d-48cf-8bb7-32a6b3fa0782" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SellingAndMarketingExpense"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_OperatingExpensesAbstract_485c6e8c-b41a-4484-9f83-1923e68a680b" xlink:to="loc_us-gaap_SellingAndMarketingExpense_206bfd51-6d9d-48cf-8bb7-32a6b3fa0782" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpense_47989bd1-af63-415a-bd4b-aad41fb34aff" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ResearchAndDevelopmentExpense"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_OperatingExpensesAbstract_485c6e8c-b41a-4484-9f83-1923e68a680b" xlink:to="loc_us-gaap_ResearchAndDevelopmentExpense_47989bd1-af63-415a-bd4b-aad41fb34aff" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GeneralAndAdministrativeExpense_ac9fdf02-189e-4e4b-b480-1488760b4093" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GeneralAndAdministrativeExpense"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_OperatingExpensesAbstract_485c6e8c-b41a-4484-9f83-1923e68a680b" xlink:to="loc_us-gaap_GeneralAndAdministrativeExpense_ac9fdf02-189e-4e4b-b480-1488760b4093" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_3d667175-6f47-4e32-87ad-4a9ca5bdbd48" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringCharges"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_OperatingExpensesAbstract_485c6e8c-b41a-4484-9f83-1923e68a680b" xlink:to="loc_us-gaap_RestructuringCharges_3d667175-6f47-4e32-87ad-4a9ca5bdbd48" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingExpenses_206dda4e-2427-4017-bf03-9912ebce204c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingExpenses"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_OperatingExpensesAbstract_485c6e8c-b41a-4484-9f83-1923e68a680b" xlink:to="loc_us-gaap_OperatingExpenses_206dda4e-2427-4017-bf03-9912ebce204c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingIncomeLoss_e10149a3-85c6-4b47-863d-97cefc000895" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingIncomeLoss"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_5f6cb8ab-74a3-4cd2-8ac1-78ad41f2cb61" xlink:to="loc_us-gaap_OperatingIncomeLoss_e10149a3-85c6-4b47-863d-97cefc000895" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NonoperatingIncomeExpenseAbstract_b4b0a510-6320-4e6f-bf13-fadc501eadb1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NonoperatingIncomeExpenseAbstract"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_5f6cb8ab-74a3-4cd2-8ac1-78ad41f2cb61" xlink:to="loc_us-gaap_NonoperatingIncomeExpenseAbstract_b4b0a510-6320-4e6f-bf13-fadc501eadb1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentIncomeNet_dbcc1c29-23c0-4c52-b371-b793270f4bcc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InvestmentIncomeNet"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NonoperatingIncomeExpenseAbstract_b4b0a510-6320-4e6f-bf13-fadc501eadb1" xlink:to="loc_us-gaap_InvestmentIncomeNet_dbcc1c29-23c0-4c52-b371-b793270f4bcc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherNonoperatingIncomeExpense_6a00c866-e569-4926-9e69-e958ec3e59e9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherNonoperatingIncomeExpense"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NonoperatingIncomeExpenseAbstract_b4b0a510-6320-4e6f-bf13-fadc501eadb1" xlink:to="loc_us-gaap_OtherNonoperatingIncomeExpense_6a00c866-e569-4926-9e69-e958ec3e59e9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NonoperatingIncomeExpense_74c125be-7cfc-4be4-8d15-0660536240ed" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NonoperatingIncomeExpense"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NonoperatingIncomeExpenseAbstract_b4b0a510-6320-4e6f-bf13-fadc501eadb1" xlink:to="loc_us-gaap_NonoperatingIncomeExpense_74c125be-7cfc-4be4-8d15-0660536240ed" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_5176caae-4676-4290-bfd1-33e180d45b8b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_5f6cb8ab-74a3-4cd2-8ac1-78ad41f2cb61" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_5176caae-4676-4290-bfd1-33e180d45b8b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_f70a86f8-4872-4f8b-9549-f99c56106a5e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxExpenseBenefit"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_5f6cb8ab-74a3-4cd2-8ac1-78ad41f2cb61" xlink:to="loc_us-gaap_IncomeTaxExpenseBenefit_f70a86f8-4872-4f8b-9549-f99c56106a5e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_0a24dc26-cebf-4e45-81d5-01fe4e54d96c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetIncomeLoss"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_5f6cb8ab-74a3-4cd2-8ac1-78ad41f2cb61" xlink:to="loc_us-gaap_NetIncomeLoss_0a24dc26-cebf-4e45-81d5-01fe4e54d96c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasicAbstract_2278a816-0168-4dd8-baa4-599a4d185ca5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareBasicAbstract"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_5f6cb8ab-74a3-4cd2-8ac1-78ad41f2cb61" xlink:to="loc_us-gaap_EarningsPerShareBasicAbstract_2278a816-0168-4dd8-baa4-599a4d185ca5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasic_eb2e34e9-cde8-4698-b63a-d4b2b59d9f13" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareBasic"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareBasicAbstract_2278a816-0168-4dd8-baa4-599a4d185ca5" xlink:to="loc_us-gaap_EarningsPerShareBasic_eb2e34e9-cde8-4698-b63a-d4b2b59d9f13" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDiluted_f02cb054-526b-4684-baf6-dc8d3ef9c4a7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareDiluted"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareBasicAbstract_2278a816-0168-4dd8-baa4-599a4d185ca5" xlink:to="loc_us-gaap_EarningsPerShareDiluted_f02cb054-526b-4684-baf6-dc8d3ef9c4a7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract_e9c09ca5-125c-43d5-8235-88e1b494c852" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_5f6cb8ab-74a3-4cd2-8ac1-78ad41f2cb61" xlink:to="loc_us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract_e9c09ca5-125c-43d5-8235-88e1b494c852" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_5d415893-93dc-47b2-995d-2afe8be6eda9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract_e9c09ca5-125c-43d5-8235-88e1b494c852" xlink:to="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_5d415893-93dc-47b2-995d-2afe8be6eda9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_a5393ac4-74ac-470a-9f19-4704115cbf65" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract_e9c09ca5-125c-43d5-8235-88e1b494c852" xlink:to="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_a5393ac4-74ac-470a-9f19-4704115cbf65" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_5d2dd306-b3af-403a-a3c6-4234422dce6b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetIncomeLoss"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_5f6cb8ab-74a3-4cd2-8ac1-78ad41f2cb61" xlink:to="loc_us-gaap_NetIncomeLoss_5d2dd306-b3af-403a-a3c6-4234422dce6b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract_be7e624d-195e-4345-a8d4-d2a9f0792b58" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_5f6cb8ab-74a3-4cd2-8ac1-78ad41f2cb61" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract_be7e624d-195e-4345-a8d4-d2a9f0792b58" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_c19177ac-3f6a-41cd-92bf-d35d7155d57b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract_be7e624d-195e-4345-a8d4-d2a9f0792b58" xlink:to="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_c19177ac-3f6a-41cd-92bf-d35d7155d57b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_550c0e5c-a693-43f6-8c9f-b7a6a292336e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract_be7e624d-195e-4345-a8d4-d2a9f0792b58" xlink:to="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_550c0e5c-a693-43f6-8c9f-b7a6a292336e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_ca8f7e66-a3ae-44ca-b7d5-761ac00e0731" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract_be7e624d-195e-4345-a8d4-d2a9f0792b58" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_ca8f7e66-a3ae-44ca-b7d5-761ac00e0731" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComprehensiveIncomeNetOfTax_e4658e03-1aaa-4143-8fdc-5d3bfdeb28ba" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ComprehensiveIncomeNetOfTax"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_5f6cb8ab-74a3-4cd2-8ac1-78ad41f2cb61" xlink:to="loc_us-gaap_ComprehensiveIncomeNetOfTax_e4658e03-1aaa-4143-8fdc-5d3bfdeb28ba" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity" xlink:type="simple" xlink:href="calx-20221231.xsd#ConsolidatedStatementsofStockholdersEquity"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfStockholdersEquityAbstract_4a37bf4a-fdee-4acc-87f3-71afbfdace10" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementOfStockholdersEquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementTable_4268c830-51ff-47cf-b79c-b61b732e49fb" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfStockholdersEquityAbstract_4a37bf4a-fdee-4acc-87f3-71afbfdace10" xlink:to="loc_us-gaap_StatementTable_4268c830-51ff-47cf-b79c-b61b732e49fb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementEquityComponentsAxis_64b8310a-fe67-47da-b001-2302be1089cc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementEquityComponentsAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementTable_4268c830-51ff-47cf-b79c-b61b732e49fb" xlink:to="loc_us-gaap_StatementEquityComponentsAxis_64b8310a-fe67-47da-b001-2302be1089cc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_40cbe640-ceec-45ef-9dde-0be57332a116" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityComponentDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_64b8310a-fe67-47da-b001-2302be1089cc" xlink:to="loc_us-gaap_EquityComponentDomain_40cbe640-ceec-45ef-9dde-0be57332a116" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockMember_2426cdd9-a245-4638-a263-87817e310412" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityComponentDomain_40cbe640-ceec-45ef-9dde-0be57332a116" xlink:to="loc_us-gaap_CommonStockMember_2426cdd9-a245-4638-a263-87817e310412" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalMember_e509c4a3-1b53-4a72-ba62-756f6a221752" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AdditionalPaidInCapitalMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityComponentDomain_40cbe640-ceec-45ef-9dde-0be57332a116" xlink:to="loc_us-gaap_AdditionalPaidInCapitalMember_e509c4a3-1b53-4a72-ba62-756f6a221752" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_05eefd7a-7f9c-4d0f-9325-ed0088e27e20" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityComponentDomain_40cbe640-ceec-45ef-9dde-0be57332a116" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_05eefd7a-7f9c-4d0f-9325-ed0088e27e20" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsMember_4944b04f-0b7b-48a9-9df4-e4fd73bd5120" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RetainedEarningsMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityComponentDomain_40cbe640-ceec-45ef-9dde-0be57332a116" xlink:to="loc_us-gaap_RetainedEarningsMember_4944b04f-0b7b-48a9-9df4-e4fd73bd5120" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TreasuryStockCommonMember_3c6e30cf-6203-4cb4-bbab-92b8b95c3082" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TreasuryStockCommonMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityComponentDomain_40cbe640-ceec-45ef-9dde-0be57332a116" xlink:to="loc_us-gaap_TreasuryStockCommonMember_3c6e30cf-6203-4cb4-bbab-92b8b95c3082" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementLineItems_a87d7cbd-3ff4-46ba-b845-68db4df885b8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementTable_4268c830-51ff-47cf-b79c-b61b732e49fb" xlink:to="loc_us-gaap_StatementLineItems_a87d7cbd-3ff4-46ba-b845-68db4df885b8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInStockholdersEquityRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementLineItems_a87d7cbd-3ff4-46ba-b845-68db4df885b8" xlink:to="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesOutstanding_0cb07742-2f1a-4e38-90ab-d542fe21781a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockSharesOutstanding"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_CommonStockSharesOutstanding_0cb07742-2f1a-4e38-90ab-d542fe21781a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_f2e9e747-4525-439a-b96c-a07f07d5fb24" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockholdersEquity"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_StockholdersEquity_f2e9e747-4525-439a-b96c-a07f07d5fb24" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_6b5803ea-34c7-40c6-a1e7-cde14dce4ce1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_6b5803ea-34c7-40c6-a1e7-cde14dce4ce1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation_ff7b91e4-0485-4795-a875-09f9773323aa" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation_ff7b91e4-0485-4795-a875-09f9773323aa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation_36e46b8b-517d-4521-81d9-4c846fc4e9d1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation_36e46b8b-517d-4521-81d9-4c846fc4e9d1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesNewIssues_77615cd1-2ce5-4603-af2b-9a7d028188a6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodSharesNewIssues"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_StockIssuedDuringPeriodSharesNewIssues_77615cd1-2ce5-4603-af2b-9a7d028188a6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodValueNewIssues_84902d70-5a2f-49d2-8fe8-e8c6a73b6509" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodValueNewIssues"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_StockIssuedDuringPeriodValueNewIssues_84902d70-5a2f-49d2-8fe8-e8c6a73b6509" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue_0602ef42-8000-4f93-9c70-9f376127c9b0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue_0602ef42-8000-4f93-9c70-9f376127c9b0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_885ddf07-22e4-4922-bd82-fcafbe1a9584" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetIncomeLoss"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_NetIncomeLoss_885ddf07-22e4-4922-bd82-fcafbe1a9584" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_16cc935c-ff3b-46b6-bfa6-79d559601fd5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_16cc935c-ff3b-46b6-bfa6-79d559601fd5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesOutstanding_bf0c9a07-14f8-4ae2-8d57-9be6e1b0b887" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockSharesOutstanding"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_CommonStockSharesOutstanding_bf0c9a07-14f8-4ae2-8d57-9be6e1b0b887" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_c4ec5de6-4436-4ae8-8362-7fed28bef5f7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockholdersEquity"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_f03fa36c-bda7-4d2f-9746-baab5f6afbb9" xlink:to="loc_us-gaap_StockholdersEquity_c4ec5de6-4436-4ae8-8362-7fed28bef5f7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/ConsolidatedStatementsofCashFlows" xlink:type="simple" xlink:href="calx-20221231.xsd#ConsolidatedStatementsofCashFlows"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/ConsolidatedStatementsofCashFlows" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfCashFlowsAbstract_d0f890f6-3793-4cf4-a7bb-431bac83846b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementOfCashFlowsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_cb384394-a605-4487-adea-74ad6592bf6b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d0f890f6-3793-4cf4-a7bb-431bac83846b" xlink:to="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_cb384394-a605-4487-adea-74ad6592bf6b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_a1b4e7af-fb8a-4292-9713-cd5f44779006" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetIncomeLoss"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_cb384394-a605-4487-adea-74ad6592bf6b" xlink:to="loc_us-gaap_NetIncomeLoss_a1b4e7af-fb8a-4292-9713-cd5f44779006" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_732f1393-cb18-4be4-8b75-5d8ab846bb40" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_cb384394-a605-4487-adea-74ad6592bf6b" xlink:to="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_732f1393-cb18-4be4-8b75-5d8ab846bb40" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensation_3dfe1e72-6b97-4107-8634-203da9937211" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensation"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_732f1393-cb18-4be4-8b75-5d8ab846bb40" xlink:to="loc_us-gaap_ShareBasedCompensation_3dfe1e72-6b97-4107-8634-203da9937211" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Depreciation_e97e0196-b4ca-4f7d-9de7-2ef1f16b62fd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Depreciation"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_732f1393-cb18-4be4-8b75-5d8ab846bb40" xlink:to="loc_us-gaap_Depreciation_e97e0196-b4ca-4f7d-9de7-2ef1f16b62fd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxesAndTaxCredits_b97be542-3b5f-470a-9501-f7e34d359a93" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxesAndTaxCredits"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_732f1393-cb18-4be4-8b75-5d8ab846bb40" xlink:to="loc_us-gaap_DeferredIncomeTaxesAndTaxCredits_b97be542-3b5f-470a-9501-f7e34d359a93" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_6d12a75d-ecce-4ff2-a119-12c7d06d96d6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_732f1393-cb18-4be4-8b75-5d8ab846bb40" xlink:to="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_6d12a75d-ecce-4ff2-a119-12c7d06d96d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnDispositionOfAssets_cc9a49e2-611a-4892-86a2-ca4306cd9275" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GainLossOnDispositionOfAssets"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_732f1393-cb18-4be4-8b75-5d8ab846bb40" xlink:to="loc_us-gaap_GainLossOnDispositionOfAssets_cc9a49e2-611a-4892-86a2-ca4306cd9275" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract_a854b256-5b45-4623-ad70-ac0d65c1cbeb" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_732f1393-cb18-4be4-8b75-5d8ab846bb40" xlink:to="loc_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract_a854b256-5b45-4623-ad70-ac0d65c1cbeb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsReceivable_13406291-6cb7-4af8-8ca8-cbc8ce55900e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract_a854b256-5b45-4623-ad70-ac0d65c1cbeb" xlink:to="loc_us-gaap_IncreaseDecreaseInAccountsReceivable_13406291-6cb7-4af8-8ca8-cbc8ce55900e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInInventories_1681ebd1-7c29-4724-b6f6-892de39c8a14" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInInventories"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract_a854b256-5b45-4623-ad70-ac0d65c1cbeb" xlink:to="loc_us-gaap_IncreaseDecreaseInInventories_1681ebd1-7c29-4724-b6f6-892de39c8a14" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_b79f3836-c55e-476b-b933-d67197f6520a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract_a854b256-5b45-4623-ad70-ac0d65c1cbeb" xlink:to="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_b79f3836-c55e-476b-b933-d67197f6520a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsPayable_2ebc5bfd-0b62-4298-9cf7-02a2439fb96c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInAccountsPayable"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract_a854b256-5b45-4623-ad70-ac0d65c1cbeb" xlink:to="loc_us-gaap_IncreaseDecreaseInAccountsPayable_2ebc5bfd-0b62-4298-9cf7-02a2439fb96c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities_d44ceede-b554-4d9d-9129-168d3c19da60" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInAccruedLiabilities"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract_a854b256-5b45-4623-ad70-ac0d65c1cbeb" xlink:to="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities_d44ceede-b554-4d9d-9129-168d3c19da60" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInDeferredRevenue_24bfda40-8fd2-46fa-97ff-fc2b41145c00" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInDeferredRevenue"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract_a854b256-5b45-4623-ad70-ac0d65c1cbeb" xlink:to="loc_us-gaap_IncreaseDecreaseInDeferredRevenue_24bfda40-8fd2-46fa-97ff-fc2b41145c00" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities_925efd35-6bc3-4a95-9b23-3b8068798ed1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract_a854b256-5b45-4623-ad70-ac0d65c1cbeb" xlink:to="loc_us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities_925efd35-6bc3-4a95-9b23-3b8068798ed1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_6bda0fd8-4176-4865-a990-0720a33b004c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_cb384394-a605-4487-adea-74ad6592bf6b" xlink:to="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_6bda0fd8-4176-4865-a990-0720a33b004c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_e6508615-af54-43a1-9c23-4f373f505a68" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d0f890f6-3793-4cf4-a7bb-431bac83846b" xlink:to="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_e6508615-af54-43a1-9c23-4f373f505a68" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_79f5add8-4f7d-4a8f-96e8-5b50705012e5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_e6508615-af54-43a1-9c23-4f373f505a68" xlink:to="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_79f5add8-4f7d-4a8f-96e8-5b50705012e5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireMarketableSecurities_05d1aeee-ed8b-40b2-a588-c2a23a6e4cba" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PaymentsToAcquireMarketableSecurities"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_e6508615-af54-43a1-9c23-4f373f505a68" xlink:to="loc_us-gaap_PaymentsToAcquireMarketableSecurities_05d1aeee-ed8b-40b2-a588-c2a23a6e4cba" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities_a41cfb6d-4d26-474d-9a33-4bf8eab08ace" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_e6508615-af54-43a1-9c23-4f373f505a68" xlink:to="loc_us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities_a41cfb6d-4d26-474d-9a33-4bf8eab08ace" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_bbb6e8ee-5c95-4952-8222-0e0928a411be" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_e6508615-af54-43a1-9c23-4f373f505a68" xlink:to="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_bbb6e8ee-5c95-4952-8222-0e0928a411be" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_2a2df9ad-b2fc-4066-80de-bf921f4cb278" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d0f890f6-3793-4cf4-a7bb-431bac83846b" xlink:to="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_2a2df9ad-b2fc-4066-80de-bf921f4cb278" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromStockOptionsExercised_d9ca9a90-cc96-41c3-aec2-b891ddfea446" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProceedsFromStockOptionsExercised"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_2a2df9ad-b2fc-4066-80de-bf921f4cb278" xlink:to="loc_us-gaap_ProceedsFromStockOptionsExercised_d9ca9a90-cc96-41c3-aec2-b891ddfea446" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PaymentsForFinancingArrangements_e8915e4e-915c-464e-bea3-6d0562c84519" xlink:href="calx-20221231.xsd#calx_PaymentsForFinancingArrangements"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_2a2df9ad-b2fc-4066-80de-bf921f4cb278" xlink:to="loc_calx_PaymentsForFinancingArrangements_e8915e4e-915c-464e-bea3-6d0562c84519" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromIssuanceOfCommonStock_d146a403-3cdc-4b59-8f09-5b0db31e1050" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProceedsFromIssuanceOfCommonStock"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_2a2df9ad-b2fc-4066-80de-bf921f4cb278" xlink:to="loc_us-gaap_ProceedsFromIssuanceOfCommonStock_d146a403-3cdc-4b59-8f09-5b0db31e1050" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromLinesOfCredit_5b270464-41a6-424f-bbdc-91f258c5952e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProceedsFromLinesOfCredit"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_2a2df9ad-b2fc-4066-80de-bf921f4cb278" xlink:to="loc_us-gaap_ProceedsFromLinesOfCredit_5b270464-41a6-424f-bbdc-91f258c5952e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RepaymentsOfLinesOfCredit_3dcc5c74-fa6f-4eba-b6c5-edb479afe690" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RepaymentsOfLinesOfCredit"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_2a2df9ad-b2fc-4066-80de-bf921f4cb278" xlink:to="loc_us-gaap_RepaymentsOfLinesOfCredit_3dcc5c74-fa6f-4eba-b6c5-edb479afe690" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_8c8bab3d-f97d-4b60-8143-3d9a226acf52" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_2a2df9ad-b2fc-4066-80de-bf921f4cb278" xlink:to="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_8c8bab3d-f97d-4b60-8143-3d9a226acf52" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_660d7850-6650-443a-97cf-937c7e587a51" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d0f890f6-3793-4cf4-a7bb-431bac83846b" xlink:to="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_660d7850-6650-443a-97cf-937c7e587a51" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_523780e1-67a0-4f6a-b2d2-9d40280481e7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d0f890f6-3793-4cf4-a7bb-431bac83846b" xlink:to="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_523780e1-67a0-4f6a-b2d2-9d40280481e7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_8ef902a1-2a89-49de-922b-be74363296a5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d0f890f6-3793-4cf4-a7bb-431bac83846b" xlink:to="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_8ef902a1-2a89-49de-922b-be74363296a5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_350a4956-e725-483f-86a4-ced405145e71" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d0f890f6-3793-4cf4-a7bb-431bac83846b" xlink:to="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_350a4956-e725-483f-86a4-ced405145e71" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SupplementalCashFlowInformationAbstract_f01b28b1-bfb5-4eb9-a7fd-326939e8faaf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SupplementalCashFlowInformationAbstract"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d0f890f6-3793-4cf4-a7bb-431bac83846b" xlink:to="loc_us-gaap_SupplementalCashFlowInformationAbstract_f01b28b1-bfb5-4eb9-a7fd-326939e8faaf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InterestPaidNet_33cc5dc1-cebc-4c18-9717-b64832647c55" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InterestPaidNet"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SupplementalCashFlowInformationAbstract_f01b28b1-bfb5-4eb9-a7fd-326939e8faaf" xlink:to="loc_us-gaap_InterestPaidNet_33cc5dc1-cebc-4c18-9717-b64832647c55" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxesPaidNet_a5636d64-950e-4fc0-bfba-c819e29c60ac" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxesPaidNet"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SupplementalCashFlowInformationAbstract_f01b28b1-bfb5-4eb9-a7fd-326939e8faaf" xlink:to="loc_us-gaap_IncomeTaxesPaidNet_a5636d64-950e-4fc0-bfba-c819e29c60ac" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncashInvestingAndFinancingItemsAbstract_a243fb4a-634a-4852-8690-c28f20dc501a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NoncashInvestingAndFinancingItemsAbstract"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d0f890f6-3793-4cf4-a7bb-431bac83846b" xlink:to="loc_us-gaap_NoncashInvestingAndFinancingItemsAbstract_a243fb4a-634a-4852-8690-c28f20dc501a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ChangeInCapitalExpendituresIncurredButNotYetPaid_c298432a-7977-4f5c-91a3-27dba2ee53e5" xlink:href="calx-20221231.xsd#calx_ChangeInCapitalExpendituresIncurredButNotYetPaid"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NoncashInvestingAndFinancingItemsAbstract_a243fb4a-634a-4852-8690-c28f20dc501a" xlink:to="loc_calx_ChangeInCapitalExpendituresIncurredButNotYetPaid_c298432a-7977-4f5c-91a3-27dba2ee53e5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPolicies" xlink:type="simple" xlink:href="calx-20221231.xsd#DescriptionofBusinessandSignificantAccountingPolicies"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPolicies" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingPoliciesAbstract_3afc3299-7e35-4ffb-ae17-7cf9feb614d7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessDescriptionAndAccountingPoliciesTextBlock_dfacdbbe-3b30-4feb-b390-e64e4ac83e72" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BusinessDescriptionAndAccountingPoliciesTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_3afc3299-7e35-4ffb-ae17-7cf9feb614d7" xlink:to="loc_us-gaap_BusinessDescriptionAndAccountingPoliciesTextBlock_dfacdbbe-3b30-4feb-b390-e64e4ac83e72" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CashCashEquivalentsandMarketableSecurities" xlink:type="simple" xlink:href="calx-20221231.xsd#CashCashEquivalentsandMarketableSecurities"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/CashCashEquivalentsandMarketableSecurities" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAbstract_f86ffe4c-160f-4a58-a4da-17d960571ae1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsAndMarketableSecuritiesTextBlock_c6ed525e-2788-494a-a886-3b7d45d3261d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashCashEquivalentsAndMarketableSecuritiesTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_f86ffe4c-160f-4a58-a4da-17d960571ae1" xlink:to="loc_us-gaap_CashCashEquivalentsAndMarketableSecuritiesTextBlock_c6ed525e-2788-494a-a886-3b7d45d3261d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/FairValueMeasurements" xlink:type="simple" xlink:href="calx-20221231.xsd#FairValueMeasurements"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/FairValueMeasurements" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueDisclosuresAbstract_14f439b5-7efd-48a9-9936-5588c7265fb2" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueDisclosuresTextBlock_60a2a30a-90cd-4651-b4b8-7ecf2845f371" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueDisclosuresTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueDisclosuresAbstract_14f439b5-7efd-48a9-9936-5588c7265fb2" xlink:to="loc_us-gaap_FairValueDisclosuresTextBlock_60a2a30a-90cd-4651-b4b8-7ecf2845f371" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/BalanceSheetDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_0530ee19-fa33-4322-a351-bae48a846f03" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetRelatedDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SupplementalBalanceSheetDisclosuresTextBlock_20525788-7944-4a31-ae49-5eb1c0ae8211" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SupplementalBalanceSheetDisclosuresTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_0530ee19-fa33-4322-a351-bae48a846f03" xlink:to="loc_us-gaap_SupplementalBalanceSheetDisclosuresTextBlock_20525788-7944-4a31-ae49-5eb1c0ae8211" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CommitmentsandContingencies" xlink:type="simple" xlink:href="calx-20221231.xsd#CommitmentsandContingencies"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/CommitmentsandContingencies" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_bcc74f91-d1ce-446c-86a5-319343113cc2" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommitmentsAndContingenciesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock_9f45e467-f411-4e10-8f6a-e437e85c4a9b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommitmentsAndContingenciesDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_bcc74f91-d1ce-446c-86a5-319343113cc2" xlink:to="loc_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock_9f45e467-f411-4e10-8f6a-e437e85c4a9b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquity" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquity"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/StockholdersEquity" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_9805606a-a338-4d19-83db-4673fd7791fc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareholdersEquityAndShareBasedPaymentsTextBlock_a8e32e64-518e-41eb-aff4-1e977a47e504" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareholdersEquityAndShareBasedPaymentsTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_9805606a-a338-4d19-83db-4673fd7791fc" xlink:to="loc_us-gaap_ShareholdersEquityAndShareBasedPaymentsTextBlock_a8e32e64-518e-41eb-aff4-1e977a47e504" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/EmployeeBenefitPlan" xlink:type="simple" xlink:href="calx-20221231.xsd#EmployeeBenefitPlan"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/EmployeeBenefitPlan" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_c2cd78d3-ecd6-45a6-a219-049f64529fcc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CompensationAndRetirementDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CompensationAndEmployeeBenefitPlansTextBlock_629e4e00-a552-41dd-ba41-1ac8d9602048" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CompensationAndEmployeeBenefitPlansTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_c2cd78d3-ecd6-45a6-a219-049f64529fcc" xlink:to="loc_us-gaap_CompensationAndEmployeeBenefitPlansTextBlock_629e4e00-a552-41dd-ba41-1ac8d9602048" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/AccumulatedOtherComprehensiveLoss" xlink:type="simple" xlink:href="calx-20221231.xsd#AccumulatedOtherComprehensiveLoss"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/AccumulatedOtherComprehensiveLoss" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_ccba3516-f93e-48bf-802b-9d93ab7eafd4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComprehensiveIncomeNoteTextBlock_4b326619-a7a6-4fbc-a7c2-3b45ea1eea70" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ComprehensiveIncomeNoteTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_ccba3516-f93e-48bf-802b-9d93ab7eafd4" xlink:to="loc_us-gaap_ComprehensiveIncomeNoteTextBlock_4b326619-a7a6-4fbc-a7c2-3b45ea1eea70" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/IncomeTaxes" xlink:type="simple" xlink:href="calx-20221231.xsd#IncomeTaxes"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/IncomeTaxes" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_88bbb960-bb14-4d6e-b5cb-a72fbe48975b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureTextBlock_ee09efd7-fc67-4288-9074-662e52480bee" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_88bbb960-bb14-4d6e-b5cb-a72fbe48975b" xlink:to="loc_us-gaap_IncomeTaxDisclosureTextBlock_ee09efd7-fc67-4288-9074-662e52480bee" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/NetIncomePerCommonShare" xlink:type="simple" xlink:href="calx-20221231.xsd#NetIncomePerCommonShare"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/NetIncomePerCommonShare" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareAbstract_f0193c1d-7ec5-4d28-9be6-7737376791db" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareTextBlock_2fe590b1-a187-4149-a254-86c0dcb0d07a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareAbstract_f0193c1d-7ec5-4d28-9be6-7737376791db" xlink:to="loc_us-gaap_EarningsPerShareTextBlock_2fe590b1-a187-4149-a254-86c0dcb0d07a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/RevenuefromContractswithCustomers" xlink:type="simple" xlink:href="calx-20221231.xsd#RevenuefromContractswithCustomers"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/RevenuefromContractswithCustomers" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerAbstract_c2f877f0-1706-45fe-9af7-90746934695b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SegmentReportingDisclosureTextBlock_bcbfe68f-0832-425c-bc02-33271e1122dd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SegmentReportingDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_c2f877f0-1706-45fe-9af7-90746934695b" xlink:to="loc_us-gaap_SegmentReportingDisclosureTextBlock_bcbfe68f-0832-425c-bc02-33271e1122dd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies" xlink:type="simple" xlink:href="calx-20221231.xsd#DescriptionofBusinessandSignificantAccountingPoliciesPolicies"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BasisOfAccountingPolicyPolicyTextBlock_6362e9e1-4cfa-4979-b4a4-432013f5a672" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BasisOfAccountingPolicyPolicyTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_us-gaap_BasisOfAccountingPolicyPolicyTextBlock_6362e9e1-4cfa-4979-b4a4-432013f5a672" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UseOfEstimates_37935618-1633-4bc6-908e-2034575e0bdc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UseOfEstimates"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_us-gaap_UseOfEstimates_37935618-1633-4bc6-908e-2034575e0bdc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerPolicyTextBlock_78373fc1-ede6-4446-9c9b-98dc585fe3dd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerPolicyTextBlock"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerPolicyTextBlock_78373fc1-ede6-4446-9c9b-98dc585fe3dd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CostOfSalesPolicyTextBlock_468c8ec5-0884-47a7-b397-7302d16f0811" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CostOfSalesPolicyTextBlock"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_us-gaap_CostOfSalesPolicyTextBlock_468c8ec5-0884-47a7-b397-7302d16f0811" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StandardProductWarrantyPolicy_3094272e-d443-4472-8bd2-12892aa09441" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StandardProductWarrantyPolicy"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_us-gaap_StandardProductWarrantyPolicy_3094272e-d443-4472-8bd2-12892aa09441" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy_ca014c62-e593-41b7-a0b2-3e89c89aa170" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy_ca014c62-e593-41b7-a0b2-3e89c89aa170" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesPolicyTextBlock_843502a8-fe12-4079-860b-1e3950030c8c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommitmentsAndContingenciesPolicyTextBlock"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_us-gaap_CommitmentsAndContingenciesPolicyTextBlock_843502a8-fe12-4079-860b-1e3950030c8c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskCreditRisk_f4362ab7-f93f-4b91-8af5-208a3cb3c098" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskCreditRisk"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_us-gaap_ConcentrationRiskCreditRisk_f4362ab7-f93f-4b91-8af5-208a3cb3c098" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueOfFinancialInstrumentsPolicy_f163adfe-75d6-4d23-97b4-23ba6681ef3b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueOfFinancialInstrumentsPolicy"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_us-gaap_FairValueOfFinancialInstrumentsPolicy_f163adfe-75d6-4d23-97b4-23ba6681ef3b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock_26e2f2c9-0d8e-4df6-8d84-d0f7bc194e77" xlink:href="calx-20221231.xsd#calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock_26e2f2c9-0d8e-4df6-8d84-d0f7bc194e77" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy_f08d0fad-99c3-47a3-af68-95238dc07436" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_us-gaap_ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy_f08d0fad-99c3-47a3-af68-95238dc07436" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryPolicyTextBlock_547644c2-f1b9-45fe-8de3-99a5f8853e7d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InventoryPolicyTextBlock"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_us-gaap_InventoryPolicyTextBlock_547644c2-f1b9-45fe-8de3-99a5f8853e7d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock_e16bf306-0f7c-44eb-9868-1257348403c0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentPolicyTextBlock"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock_e16bf306-0f7c-44eb-9868-1257348403c0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy_47f87c2f-cf61-4fc1-b66f-157bda4e618a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy_47f87c2f-cf61-4fc1-b66f-157bda4e618a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxPolicyTextBlock_0e685bd8-b7d1-4129-8c25-011c0a28f945" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxPolicyTextBlock"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_us-gaap_IncomeTaxPolicyTextBlock_0e685bd8-b7d1-4129-8c25-011c0a28f945" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock_5588c727-ae0f-495b-a969-c97672a3807f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_038cebb9-6e9e-4fdd-a73b-03486d2e21d3" xlink:to="loc_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock_5588c727-ae0f-495b-a969-c97672a3807f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesTables" xlink:type="simple" xlink:href="calx-20221231.xsd#CashCashEquivalentsandMarketableSecuritiesTables"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAbstract_28a4fe14-1394-4c70-a75f-f4c60ba51cda" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTableTextBlock_653d64ba-cf29-402f-a42b-023825627d02" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfCashAndCashEquivalentsTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_28a4fe14-1394-4c70-a75f-f4c60ba51cda" xlink:to="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTableTextBlock_653d64ba-cf29-402f-a42b-023825627d02" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock_43497175-e639-4756-8888-4c5723ddfa82" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_28a4fe14-1394-4c70-a75f-f4c60ba51cda" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock_43497175-e639-4756-8888-4c5723ddfa82" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/FairValueMeasurementsTables" xlink:type="simple" xlink:href="calx-20221231.xsd#FairValueMeasurementsTables"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/FairValueMeasurementsTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueDisclosuresAbstract_4a98f2e0-efb7-4f50-8066-02fba6306041" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock_dc865466-6b37-441b-84a6-ef7e7423a481" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueDisclosuresAbstract_4a98f2e0-efb7-4f50-8066-02fba6306041" xlink:to="loc_us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock_dc865466-6b37-441b-84a6-ef7e7423a481" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsTables" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsTables"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_50c96eda-57a6-411c-93d1-c2de37d8b276" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetRelatedDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock_7f0ebbec-d118-4ba3-929a-d0533b2e481e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_50c96eda-57a6-411c-93d1-c2de37d8b276" xlink:to="loc_us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock_7f0ebbec-d118-4ba3-929a-d0533b2e481e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock_83d8ae4e-6d17-4229-ba7f-aee36642d37e" xlink:href="calx-20221231.xsd#calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_50c96eda-57a6-411c-93d1-c2de37d8b276" xlink:to="loc_calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock_83d8ae4e-6d17-4229-ba7f-aee36642d37e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfInventoryCurrentTableTextBlock_4f53ac50-b620-42f2-9899-286b537b52c2" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfInventoryCurrentTableTextBlock"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_50c96eda-57a6-411c-93d1-c2de37d8b276" xlink:to="loc_us-gaap_ScheduleOfInventoryCurrentTableTextBlock_4f53ac50-b620-42f2-9899-286b537b52c2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock_6f52e737-feec-4eb4-aec8-a780e57ded5e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_50c96eda-57a6-411c-93d1-c2de37d8b276" xlink:to="loc_us-gaap_DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock_6f52e737-feec-4eb4-aec8-a780e57ded5e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTextBlock_5cdbaa7b-85e9-4b75-aed1-f6a0ad899d11" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentTextBlock"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_50c96eda-57a6-411c-93d1-c2de37d8b276" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTextBlock_5cdbaa7b-85e9-4b75-aed1-f6a0ad899d11" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfOtherAssetsNoncurrentTextBlock_7262577a-c13a-4aae-b608-af50b8ee09a0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfOtherAssetsNoncurrentTextBlock"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_50c96eda-57a6-411c-93d1-c2de37d8b276" xlink:to="loc_us-gaap_ScheduleOfOtherAssetsNoncurrentTextBlock_7262577a-c13a-4aae-b608-af50b8ee09a0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock_5311dfc0-0d5f-41e9-b35e-f32875b81338" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_50c96eda-57a6-411c-93d1-c2de37d8b276" xlink:to="loc_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock_5311dfc0-0d5f-41e9-b35e-f32875b81338" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock_0e3eae14-b42d-485b-82ce-793ca86f5a3a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_50c96eda-57a6-411c-93d1-c2de37d8b276" xlink:to="loc_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock_0e3eae14-b42d-485b-82ce-793ca86f5a3a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CommitmentsandContingenciesTables" xlink:type="simple" xlink:href="calx-20221231.xsd#CommitmentsandContingenciesTables"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/CommitmentsandContingenciesTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_88049b91-0e1b-4f09-be7a-810eb44c0864" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommitmentsAndContingenciesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock_b5ff676c-ac01-4e74-aead-82126d20eb68" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_88049b91-0e1b-4f09-be7a-810eb44c0864" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock_b5ff676c-ac01-4e74-aead-82126d20eb68" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_LesseeOperatingLeaseLiabilityTableTextBlock_3ac0ced4-e24b-44d4-92c4-a6313e9f4ef6" xlink:href="calx-20221231.xsd#calx_LesseeOperatingLeaseLiabilityTableTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_88049b91-0e1b-4f09-be7a-810eb44c0864" xlink:to="loc_calx_LesseeOperatingLeaseLiabilityTableTextBlock_3ac0ced4-e24b-44d4-92c4-a6313e9f4ef6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock_84c1c20f-47f7-4db1-b62e-f8fede94c4ab" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_88049b91-0e1b-4f09-be7a-810eb44c0864" xlink:to="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock_84c1c20f-47f7-4db1-b62e-f8fede94c4ab" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityTables" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityTables"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/StockholdersEquityTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_16060176-283d-4d86-a3ac-32982760f8dc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock_556ebe9f-b6ff-4492-a4c9-a5fcc508502a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_16060176-283d-4d86-a3ac-32982760f8dc" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock_556ebe9f-b6ff-4492-a4c9-a5fcc508502a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock_3bf6112b-38d9-47b4-9b56-ad1850b9df6a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_16060176-283d-4d86-a3ac-32982760f8dc" xlink:to="loc_us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock_3bf6112b-38d9-47b4-9b56-ad1850b9df6a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ScheduleOfGrantDateFairValuesTableTextBlock_24cf420b-88d4-4973-960e-01ca7271f168" xlink:href="calx-20221231.xsd#calx_ScheduleOfGrantDateFairValuesTableTextBlock"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_16060176-283d-4d86-a3ac-32982760f8dc" xlink:to="loc_calx_ScheduleOfGrantDateFairValuesTableTextBlock_24cf420b-88d4-4973-960e-01ca7271f168" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock_225f1995-3154-4a6f-99ee-a2d9b167b45f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_16060176-283d-4d86-a3ac-32982760f8dc" xlink:to="loc_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock_225f1995-3154-4a6f-99ee-a2d9b167b45f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock_f88f2ec5-7fa3-4d5a-9943-ec8a8c1ab001" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_16060176-283d-4d86-a3ac-32982760f8dc" xlink:to="loc_us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock_f88f2ec5-7fa3-4d5a-9943-ec8a8c1ab001" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock_36e87b49-59a0-4548-a1c8-b484ed8ca49c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_16060176-283d-4d86-a3ac-32982760f8dc" xlink:to="loc_us-gaap_ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock_36e87b49-59a0-4548-a1c8-b484ed8ca49c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SharesReservedForFutureIssuanceTableTextBlock_df6235cb-b5ac-45b1-8852-f6c8fe687ffe" xlink:href="calx-20221231.xsd#calx_SharesReservedForFutureIssuanceTableTextBlock"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_16060176-283d-4d86-a3ac-32982760f8dc" xlink:to="loc_calx_SharesReservedForFutureIssuanceTableTextBlock_df6235cb-b5ac-45b1-8852-f6c8fe687ffe" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/AccumulatedOtherComprehensiveLossTables" xlink:type="simple" xlink:href="calx-20221231.xsd#AccumulatedOtherComprehensiveLossTables"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/AccumulatedOtherComprehensiveLossTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_5c7ceac1-0c96-4949-ab28-d931bea429f7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock_4da80fb1-8a25-4449-b14e-960735fda5db" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_5c7ceac1-0c96-4949-ab28-d931bea429f7" xlink:to="loc_us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock_4da80fb1-8a25-4449-b14e-960735fda5db" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/IncomeTaxesTables" xlink:type="simple" xlink:href="calx-20221231.xsd#IncomeTaxesTables"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/IncomeTaxesTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_efd48397-279c-4b45-ba20-731750a8a0cf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock_b8c9c718-8c7e-4fd9-b6c2-c404daad6c7c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_efd48397-279c-4b45-ba20-731750a8a0cf" xlink:to="loc_us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock_b8c9c718-8c7e-4fd9-b6c2-c404daad6c7c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock_f9f02ed8-d238-42f0-8795-52d50de13f24" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_efd48397-279c-4b45-ba20-731750a8a0cf" xlink:to="loc_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock_f9f02ed8-d238-42f0-8795-52d50de13f24" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock_ced4ca02-a103-4c33-8784-74eae18dad87" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_efd48397-279c-4b45-ba20-731750a8a0cf" xlink:to="loc_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock_ced4ca02-a103-4c33-8784-74eae18dad87" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock_7f912d79-e6c8-49fb-b953-e00aea034235" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_efd48397-279c-4b45-ba20-731750a8a0cf" xlink:to="loc_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock_7f912d79-e6c8-49fb-b953-e00aea034235" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock_c590b0b2-4cca-40f6-9a8e-90e0aeb2afdf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SummaryOfIncomeTaxContingenciesTextBlock"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_efd48397-279c-4b45-ba20-731750a8a0cf" xlink:to="loc_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock_c590b0b2-4cca-40f6-9a8e-90e0aeb2afdf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/NetIncomePerCommonShareTables" xlink:type="simple" xlink:href="calx-20221231.xsd#NetIncomePerCommonShareTables"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/NetIncomePerCommonShareTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareAbstract_e647407b-aeed-4afe-bd0f-5eca4a447e91" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock_21aa7a70-313b-4c56-864d-43d9d1e70da3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareAbstract_e647407b-aeed-4afe-bd0f-5eca4a447e91" xlink:to="loc_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock_21aa7a70-313b-4c56-864d-43d9d1e70da3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersTables" xlink:type="simple" xlink:href="calx-20221231.xsd#RevenuefromContractswithCustomersTables"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/RevenuefromContractswithCustomersTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerAbstract_2702e794-77b5-45b0-a938-15d9c107accd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock_166fd269-0c33-4e89-95f1-a49e6981ef11" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_2702e794-77b5-45b0-a938-15d9c107accd" xlink:to="loc_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock_166fd269-0c33-4e89-95f1-a49e6981ef11" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock_b9ed31ec-6eb8-430c-a2cc-fa465f6f2a8b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_2702e794-77b5-45b0-a938-15d9c107accd" xlink:to="loc_us-gaap_ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock_b9ed31ec-6eb8-430c-a2cc-fa465f6f2a8b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesContractCostsDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#DescriptionofBusinessandSignificantAccountingPoliciesContractCostsDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesContractCostsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingPoliciesAbstract_6c0bc558-f87b-4605-b7be-962c8ad4b474" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CapitalizedContractCostAmortizationPeriod_f82bbfb2-6788-4daa-903e-b1945c7a3147" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CapitalizedContractCostAmortizationPeriod"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6c0bc558-f87b-4605-b7be-962c8ad4b474" xlink:to="loc_us-gaap_CapitalizedContractCostAmortizationPeriod_f82bbfb2-6788-4daa-903e-b1945c7a3147" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingPoliciesAbstract_31c36ed8-7650-4349-8cae-32d6c15fe55e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_75bdcb4c-9d1e-45eb-8517-46f6a7e2c717" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfPropertyPlantAndEquipmentTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_31c36ed8-7650-4349-8cae-32d6c15fe55e" xlink:to="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_75bdcb4c-9d1e-45eb-8517-46f6a7e2c717" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_a8386bdb-989b-4d37-bd74-b1492491ca35" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_75bdcb4c-9d1e-45eb-8517-46f6a7e2c717" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_a8386bdb-989b-4d37-bd74-b1492491ca35" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_76147100-373f-4148-991e-53d163024eaa" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_a8386bdb-989b-4d37-bd74-b1492491ca35" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_76147100-373f-4148-991e-53d163024eaa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComputerEquipmentMember_85b21e38-2499-4285-935e-189f4785168c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ComputerEquipmentMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_76147100-373f-4148-991e-53d163024eaa" xlink:to="loc_us-gaap_ComputerEquipmentMember_85b21e38-2499-4285-935e-189f4785168c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComputerSoftwareIntangibleAssetMember_721ec2be-db3a-4011-af7d-6fc95de982ea" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ComputerSoftwareIntangibleAssetMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_76147100-373f-4148-991e-53d163024eaa" xlink:to="loc_us-gaap_ComputerSoftwareIntangibleAssetMember_721ec2be-db3a-4011-af7d-6fc95de982ea" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquipmentMember_ae2a9090-fb4d-4349-88a6-bc4e6787722d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquipmentMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_76147100-373f-4148-991e-53d163024eaa" xlink:to="loc_us-gaap_EquipmentMember_ae2a9090-fb4d-4349-88a6-bc4e6787722d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FurnitureAndFixturesMember_9c3977a5-250e-4fad-80a8-5407e9461476" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FurnitureAndFixturesMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_76147100-373f-4148-991e-53d163024eaa" xlink:to="loc_us-gaap_FurnitureAndFixturesMember_9c3977a5-250e-4fad-80a8-5407e9461476" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_2c8ab956-5784-4b0e-9dc6-66e3fdc56818" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_75bdcb4c-9d1e-45eb-8517-46f6a7e2c717" xlink:to="loc_srt_RangeAxis_2c8ab956-5784-4b0e-9dc6-66e3fdc56818" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_e9a96705-45b5-4d17-9847-9330715c8fa5" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_2c8ab956-5784-4b0e-9dc6-66e3fdc56818" xlink:to="loc_srt_RangeMember_e9a96705-45b5-4d17-9847-9330715c8fa5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_056a8ae2-2edc-4850-82b5-d6866d7f88ca" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_MinimumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_e9a96705-45b5-4d17-9847-9330715c8fa5" xlink:to="loc_srt_MinimumMember_056a8ae2-2edc-4850-82b5-d6866d7f88ca" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_affb463d-5f11-4569-8f79-1596fba2661e" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_MaximumMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_e9a96705-45b5-4d17-9847-9330715c8fa5" xlink:to="loc_srt_MaximumMember_affb463d-5f11-4569-8f79-1596fba2661e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentLineItems_85bf585f-e8ed-46ce-acd2-9b24daf973d5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_75bdcb4c-9d1e-45eb-8517-46f6a7e2c717" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentLineItems_85bf585f-e8ed-46ce-acd2-9b24daf973d5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife_84812ad3-db95-41c7-b3d4-69df8845b489" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_85bf585f-e8ed-46ce-acd2-9b24daf973d5" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife_84812ad3-db95-41c7-b3d4-69df8845b489" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail" xlink:type="simple" xlink:href="calx-20221231.xsd#DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingPoliciesAbstract_374fefc6-9328-4965-8228-3f1377236494" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ScheduleOfCertainTermsTableTable_d5da9a14-864d-4082-9279-db6500f28fbd" xlink:href="calx-20221231.xsd#calx_ScheduleOfCertainTermsTableTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_374fefc6-9328-4965-8228-3f1377236494" xlink:to="loc_calx_ScheduleOfCertainTermsTableTable_d5da9a14-864d-4082-9279-db6500f28fbd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_e1908e0f-3af2-46b7-9220-930801750d9a" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_ScheduleOfCertainTermsTableTable_d5da9a14-864d-4082-9279-db6500f28fbd" xlink:to="loc_srt_RangeAxis_e1908e0f-3af2-46b7-9220-930801750d9a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_8f53c8a4-9c25-4f71-9684-55256301154c" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_e1908e0f-3af2-46b7-9220-930801750d9a" xlink:to="loc_srt_RangeMember_8f53c8a4-9c25-4f71-9684-55256301154c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_05b3fa91-dc5c-4c6e-9b6c-006e04137590" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_MinimumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_8f53c8a4-9c25-4f71-9684-55256301154c" xlink:to="loc_srt_MinimumMember_05b3fa91-dc5c-4c6e-9b6c-006e04137590" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_6fc347ed-7a1a-4207-ae97-43493948cd9a" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_MaximumMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_8f53c8a4-9c25-4f71-9684-55256301154c" xlink:to="loc_srt_MaximumMember_6fc347ed-7a1a-4207-ae97-43493948cd9a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ConsolidatedEntitiesAxis_1a8f13b6-03d3-4248-abd3-a18ed6f65658" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ConsolidatedEntitiesAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_ScheduleOfCertainTermsTableTable_d5da9a14-864d-4082-9279-db6500f28fbd" xlink:to="loc_srt_ConsolidatedEntitiesAxis_1a8f13b6-03d3-4248-abd3-a18ed6f65658" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ConsolidatedEntitiesDomain_20e22431-eae6-4e13-8ce8-8479754504ab" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ConsolidatedEntitiesDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ConsolidatedEntitiesAxis_1a8f13b6-03d3-4248-abd3-a18ed6f65658" xlink:to="loc_srt_ConsolidatedEntitiesDomain_20e22431-eae6-4e13-8ce8-8479754504ab" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SubsidiariesMember_96e2c6c6-1249-442b-87e7-aac603d685d5" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SubsidiariesMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ConsolidatedEntitiesDomain_20e22431-eae6-4e13-8ce8-8479754504ab" xlink:to="loc_srt_SubsidiariesMember_96e2c6c6-1249-442b-87e7-aac603d685d5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_859c5d06-cca4-4178-aca9-dc320efc933c" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_StatementGeographicalAxis"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_ScheduleOfCertainTermsTableTable_d5da9a14-864d-4082-9279-db6500f28fbd" xlink:to="loc_srt_StatementGeographicalAxis_859c5d06-cca4-4178-aca9-dc320efc933c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_53756451-188b-4d8e-9257-ee2a24c4631b" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_StatementGeographicalAxis_859c5d06-cca4-4178-aca9-dc320efc933c" xlink:to="loc_srt_SegmentGeographicalDomain_53756451-188b-4d8e-9257-ee2a24c4631b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_BrazilChinaAndUnitedKingdomMember_e854da6d-217a-4411-b474-929e2c7245fa" xlink:href="calx-20221231.xsd#calx_BrazilChinaAndUnitedKingdomMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_53756451-188b-4d8e-9257-ee2a24c4631b" xlink:to="loc_calx_BrazilChinaAndUnitedKingdomMember_e854da6d-217a-4411-b474-929e2c7245fa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ScheduleOfCertainTermsLineItemsLineItems_19c87865-bb4d-4b19-9ebf-d97c7f658027" xlink:href="calx-20221231.xsd#calx_ScheduleOfCertainTermsLineItemsLineItems"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_ScheduleOfCertainTermsTableTable_d5da9a14-864d-4082-9279-db6500f28fbd" xlink:to="loc_calx_ScheduleOfCertainTermsLineItemsLineItems_19c87865-bb4d-4b19-9ebf-d97c7f658027" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ProductWarrantyPeriod_f4e3c96d-2bbb-4edd-8853-308948497bc6" xlink:href="calx-20221231.xsd#calx_ProductWarrantyPeriod"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_ScheduleOfCertainTermsLineItemsLineItems_19c87865-bb4d-4b19-9ebf-d97c7f658027" xlink:to="loc_calx_ProductWarrantyPeriod_f4e3c96d-2bbb-4edd-8853-308948497bc6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash_1ff9a98a-e7d7-42ad-89cd-0544abb21d02" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Cash"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_ScheduleOfCertainTermsLineItemsLineItems_19c87865-bb4d-4b19-9ebf-d97c7f658027" xlink:to="loc_us-gaap_Cash_1ff9a98a-e7d7-42ad-89cd-0544abb21d02" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillImpairmentLoss_416689bb-6d56-40c2-a826-d79a52ad9670" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GoodwillImpairmentLoss"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_ScheduleOfCertainTermsLineItemsLineItems_19c87865-bb4d-4b19-9ebf-d97c7f658027" xlink:to="loc_us-gaap_GoodwillImpairmentLoss_416689bb-6d56-40c2-a826-d79a52ad9670" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance_12565652-3892-42e7-a493-f589be3ad208" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_ScheduleOfCertainTermsLineItemsLineItems_19c87865-bb4d-4b19-9ebf-d97c7f658027" xlink:to="loc_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance_12565652-3892-42e7-a493-f589be3ad208" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance_5e9cc701-3939-4fab-ba24-a2badc86530f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsValuationAllowance"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_ScheduleOfCertainTermsLineItemsLineItems_19c87865-bb4d-4b19-9ebf-d97c7f658027" xlink:to="loc_us-gaap_DeferredTaxAssetsValuationAllowance_5e9cc701-3939-4fab-ba24-a2badc86530f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#CashCashEquivalentsandMarketableSecuritiesDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAbstract_44213799-9798-46e9-ad6f-d606c18ec76b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTable_6bef55bb-3d89-4f58-8ff6-585c906d28bc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfCashAndCashEquivalentsTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_44213799-9798-46e9-ad6f-d606c18ec76b" xlink:to="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTable_6bef55bb-3d89-4f58-8ff6-585c906d28bc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAxis_add4a386-4911-4ed4-bbd8-dd660ba8a9c7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTable_6bef55bb-3d89-4f58-8ff6-585c906d28bc" xlink:to="loc_us-gaap_CashAndCashEquivalentsAxis_add4a386-4911-4ed4-bbd8-dd660ba8a9c7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_d80cf9f8-22e0-42ac-a289-0de30c4a58e4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAxis_add4a386-4911-4ed4-bbd8-dd660ba8a9c7" xlink:to="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_d80cf9f8-22e0-42ac-a289-0de30c4a58e4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashMember_99eb019f-0d31-4170-ac09-28fd1caeb3d1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_d80cf9f8-22e0-42ac-a289-0de30c4a58e4" xlink:to="loc_us-gaap_CashMember_99eb019f-0d31-4170-ac09-28fd1caeb3d1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommercialPaperMember_74c838b4-894d-4643-a24a-df07e16c3ce2" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommercialPaperMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_d80cf9f8-22e0-42ac-a289-0de30c4a58e4" xlink:to="loc_us-gaap_CommercialPaperMember_74c838b4-894d-4643-a24a-df07e16c3ce2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentDebtSecuritiesMember_93c31a0d-b175-4ccd-8136-732a53e1b8d1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentDebtSecuritiesMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_d80cf9f8-22e0-42ac-a289-0de30c4a58e4" xlink:to="loc_us-gaap_USGovernmentDebtSecuritiesMember_93c31a0d-b175-4ccd-8136-732a53e1b8d1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MoneyMarketFundsMember_958ce0f9-b54c-4aaa-921a-345372a30b4d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MoneyMarketFundsMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_d80cf9f8-22e0-42ac-a289-0de30c4a58e4" xlink:to="loc_us-gaap_MoneyMarketFundsMember_958ce0f9-b54c-4aaa-921a-345372a30b4d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateDebtSecuritiesMember_02d5dbf4-dc21-4871-b0d6-ccec4c3b75c3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CorporateDebtSecuritiesMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_d80cf9f8-22e0-42ac-a289-0de30c4a58e4" xlink:to="loc_us-gaap_CorporateDebtSecuritiesMember_02d5dbf4-dc21-4871-b0d6-ccec4c3b75c3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_406c62e8-82c3-4945-ae64-b07ecf367e8c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTable_6bef55bb-3d89-4f58-8ff6-585c906d28bc" xlink:to="loc_us-gaap_FinancialInstrumentAxis_406c62e8-82c3-4945-ae64-b07ecf367e8c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_75fc01f2-31a6-4105-b18f-d45a59abda24" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FinancialInstrumentAxis_406c62e8-82c3-4945-ae64-b07ecf367e8c" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_75fc01f2-31a6-4105-b18f-d45a59abda24" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentDebtSecuritiesMember_102dbfb7-0b88-48ad-bf78-0616e0d8febf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentDebtSecuritiesMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_75fc01f2-31a6-4105-b18f-d45a59abda24" xlink:to="loc_us-gaap_USGovernmentDebtSecuritiesMember_102dbfb7-0b88-48ad-bf78-0616e0d8febf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommercialPaperMember_60321ad9-077b-4462-bfe0-b2d49c015626" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommercialPaperMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_75fc01f2-31a6-4105-b18f-d45a59abda24" xlink:to="loc_us-gaap_CommercialPaperMember_60321ad9-077b-4462-bfe0-b2d49c015626" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentAgenciesDebtSecuritiesMember_6b2fd713-b996-4dd8-bbce-e0ea5a475f31" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentAgenciesDebtSecuritiesMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_75fc01f2-31a6-4105-b18f-d45a59abda24" xlink:to="loc_us-gaap_USGovernmentAgenciesDebtSecuritiesMember_6b2fd713-b996-4dd8-bbce-e0ea5a475f31" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateDebtSecuritiesMember_12109075-5729-43c6-a208-4a11e043325e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CorporateDebtSecuritiesMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_75fc01f2-31a6-4105-b18f-d45a59abda24" xlink:to="loc_us-gaap_CorporateDebtSecuritiesMember_12109075-5729-43c6-a208-4a11e043325e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalNotesMember_25aef531-5c12-418e-9676-d3989bf07e2d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MunicipalNotesMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_75fc01f2-31a6-4105-b18f-d45a59abda24" xlink:to="loc_us-gaap_MunicipalNotesMember_25aef531-5c12-418e-9676-d3989bf07e2d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_992bbfa0-bbe3-42bf-949e-0821835c6206" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeAxis"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTable_6bef55bb-3d89-4f58-8ff6-585c906d28bc" xlink:to="loc_srt_RangeAxis_992bbfa0-bbe3-42bf-949e-0821835c6206" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_c3c21d64-76f4-414f-8945-5eadf2011874" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_992bbfa0-bbe3-42bf-949e-0821835c6206" xlink:to="loc_srt_RangeMember_c3c21d64-76f4-414f-8945-5eadf2011874" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_9db422f7-0496-45cc-8814-c7ebed68f6b6" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_MaximumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_c3c21d64-76f4-414f-8945-5eadf2011874" xlink:to="loc_srt_MaximumMember_9db422f7-0496-45cc-8814-c7ebed68f6b6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsLineItems"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfCashAndCashEquivalentsTable_6bef55bb-3d89-4f58-8ff6-585c906d28bc" xlink:to="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash_1d76b92b-39e7-43f4-879a-6d49de640d66" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Cash"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:to="loc_us-gaap_Cash_1d76b92b-39e7-43f4-879a-6d49de640d66" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashEquivalentsAtCarryingValue_9e337fc8-ea06-43fe-acc2-32b7ecb70f43" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashEquivalentsAtCarryingValue"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:to="loc_us-gaap_CashEquivalentsAtCarryingValue_9e337fc8-ea06-43fe-acc2-32b7ecb70f43" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_47949f34-d72d-4a4a-b989-6f56b1dad1ca" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:to="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_47949f34-d72d-4a4a-b989-6f56b1dad1ca" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_971db2d5-526e-464b-9cc8-0e27cef58e3a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_971db2d5-526e-464b-9cc8-0e27cef58e3a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CashCashEquivalentsAndMarketableSecurities_39468f7f-6248-4bb5-a500-5b77436d8615" xlink:href="calx-20221231.xsd#calx_CashCashEquivalentsAndMarketableSecurities"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:to="loc_calx_CashCashEquivalentsAndMarketableSecurities_39468f7f-6248-4bb5-a500-5b77436d8615" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleTerm_1b0df09f-5fab-4092-a58e-26ab263852c8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleTerm"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsLineItems_2289cc85-d076-4383-8f61-0dc433dd65cd" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleTerm_1b0df09f-5fab-4092-a58e-26ab263852c8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAbstract_1ae3b9bd-6101-45cf-aad8-bcc4ecc26c45" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleTable_cca145f2-47cb-4f5f-aa53-9525c0c2a4a7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_1ae3b9bd-6101-45cf-aad8-bcc4ecc26c45" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleTable_cca145f2-47cb-4f5f-aa53-9525c0c2a4a7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_2a002ef4-f0bd-40ef-8b44-360d6997de01" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleTable_cca145f2-47cb-4f5f-aa53-9525c0c2a4a7" xlink:to="loc_us-gaap_FinancialInstrumentAxis_2a002ef4-f0bd-40ef-8b44-360d6997de01" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_d6ba8d46-1adc-4e8d-a98c-daca21a241cf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FinancialInstrumentAxis_2a002ef4-f0bd-40ef-8b44-360d6997de01" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_d6ba8d46-1adc-4e8d-a98c-daca21a241cf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentDebtSecuritiesMember_d63d2158-31ba-44e7-b3e5-9d5506a76166" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentDebtSecuritiesMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_d6ba8d46-1adc-4e8d-a98c-daca21a241cf" xlink:to="loc_us-gaap_USGovernmentDebtSecuritiesMember_d63d2158-31ba-44e7-b3e5-9d5506a76166" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommercialPaperMember_c67bd137-f403-40f2-842b-d9c51d1ff661" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommercialPaperMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_d6ba8d46-1adc-4e8d-a98c-daca21a241cf" xlink:to="loc_us-gaap_CommercialPaperMember_c67bd137-f403-40f2-842b-d9c51d1ff661" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentAgenciesDebtSecuritiesMember_ed1e654c-0672-4d7e-91a8-b47ede61d1e8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentAgenciesDebtSecuritiesMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_d6ba8d46-1adc-4e8d-a98c-daca21a241cf" xlink:to="loc_us-gaap_USGovernmentAgenciesDebtSecuritiesMember_ed1e654c-0672-4d7e-91a8-b47ede61d1e8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateDebtSecuritiesMember_68d7585f-f003-459a-8e39-c787348e0d42" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CorporateDebtSecuritiesMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_d6ba8d46-1adc-4e8d-a98c-daca21a241cf" xlink:to="loc_us-gaap_CorporateDebtSecuritiesMember_68d7585f-f003-459a-8e39-c787348e0d42" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalNotesMember_f7bfdbc3-b2ca-4de4-83ca-ce5101b2ad81" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MunicipalNotesMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_d6ba8d46-1adc-4e8d-a98c-daca21a241cf" xlink:to="loc_us-gaap_MunicipalNotesMember_f7bfdbc3-b2ca-4de4-83ca-ce5101b2ad81" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationAxis_a5592e37-9419-4bed-a0aa-2012482456a7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetLocationAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleTable_cca145f2-47cb-4f5f-aa53-9525c0c2a4a7" xlink:to="loc_us-gaap_BalanceSheetLocationAxis_a5592e37-9419-4bed-a0aa-2012482456a7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain_c342979b-9a8e-4398-beb8-1c02b4855996" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetLocationDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetLocationAxis_a5592e37-9419-4bed-a0aa-2012482456a7" xlink:to="loc_us-gaap_BalanceSheetLocationDomain_c342979b-9a8e-4398-beb8-1c02b4855996" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember_1f2df069-bfa7-4318-bc82-f554007334e1" xlink:href="calx-20221231.xsd#calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetLocationDomain_c342979b-9a8e-4398-beb8-1c02b4855996" xlink:to="loc_calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember_1f2df069-bfa7-4318-bc82-f554007334e1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShortTermMarketableSecuritiesMember_87428955-f12e-41f9-9777-eb164858f9b8" xlink:href="calx-20221231.xsd#calx_ShortTermMarketableSecuritiesMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember_1f2df069-bfa7-4318-bc82-f554007334e1" xlink:to="loc_calx_ShortTermMarketableSecuritiesMember_87428955-f12e-41f9-9777-eb164858f9b8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_52289a51-ad7e-4770-a5a6-07cd04d4e719" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleTable_cca145f2-47cb-4f5f-aa53-9525c0c2a4a7" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_52289a51-ad7e-4770-a5a6-07cd04d4e719" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent_c40ab620-abf7-4f9f-b127-5ef8779e71d6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_52289a51-ad7e-4770-a5a6-07cd04d4e719" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent_c40ab620-abf7-4f9f-b127-5ef8779e71d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_c686595f-aea4-41b5-b56e-2972d4c8e266" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_52289a51-ad7e-4770-a5a6-07cd04d4e719" xlink:to="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_c686595f-aea4-41b5-b56e-2972d4c8e266" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_cc41bd6d-a098-4fd2-816a-1156d05d27cb" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_52289a51-ad7e-4770-a5a6-07cd04d4e719" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_cc41bd6d-a098-4fd2-816a-1156d05d27cb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/FairValueMeasurementsDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#FairValueMeasurementsDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/FairValueMeasurementsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueDisclosuresAbstract_7c70e004-7c75-4be2-932c-e3a84d7aad02" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d7047ec-3954-42fb-844a-0c1e620aed72" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueDisclosuresAbstract_7c70e004-7c75-4be2-932c-e3a84d7aad02" xlink:to="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d7047ec-3954-42fb-844a-0c1e620aed72" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByMeasurementFrequencyAxis_e1ece357-0cb2-4765-adb0-b3dd15b98960" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueByMeasurementFrequencyAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d7047ec-3954-42fb-844a-0c1e620aed72" xlink:to="loc_us-gaap_FairValueByMeasurementFrequencyAxis_e1ece357-0cb2-4765-adb0-b3dd15b98960" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain_caa81b5a-9ef6-48e7-8f82-583f2c05cd54" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueMeasurementFrequencyDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueByMeasurementFrequencyAxis_e1ece357-0cb2-4765-adb0-b3dd15b98960" xlink:to="loc_us-gaap_FairValueMeasurementFrequencyDomain_caa81b5a-9ef6-48e7-8f82-583f2c05cd54" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsRecurringMember_eae1b1c8-6d13-49e7-82b5-6540c8c76295" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueMeasurementsRecurringMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueMeasurementFrequencyDomain_caa81b5a-9ef6-48e7-8f82-583f2c05cd54" xlink:to="loc_us-gaap_FairValueMeasurementsRecurringMember_eae1b1c8-6d13-49e7-82b5-6540c8c76295" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAxis_cbe2938c-7c64-416a-bf16-8b7fa04f2ed1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashAndCashEquivalentsAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d7047ec-3954-42fb-844a-0c1e620aed72" xlink:to="loc_us-gaap_CashAndCashEquivalentsAxis_cbe2938c-7c64-416a-bf16-8b7fa04f2ed1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_6c505cf1-ff57-4d9b-8989-42a3cb475891" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAxis_cbe2938c-7c64-416a-bf16-8b7fa04f2ed1" xlink:to="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_6c505cf1-ff57-4d9b-8989-42a3cb475891" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MoneyMarketFundsMember_2a0adfe1-5de4-423c-9efc-b549de1eb4bd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MoneyMarketFundsMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember_6c505cf1-ff57-4d9b-8989-42a3cb475891" xlink:to="loc_us-gaap_MoneyMarketFundsMember_2a0adfe1-5de4-423c-9efc-b549de1eb4bd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_8e411f2f-aacf-4d48-8f16-e367bc38db6c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d7047ec-3954-42fb-844a-0c1e620aed72" xlink:to="loc_us-gaap_FinancialInstrumentAxis_8e411f2f-aacf-4d48-8f16-e367bc38db6c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_1c795ef9-f4de-4874-807d-b9c1c976e615" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FinancialInstrumentAxis_8e411f2f-aacf-4d48-8f16-e367bc38db6c" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_1c795ef9-f4de-4874-807d-b9c1c976e615" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentDebtSecuritiesMember_89892a71-516b-4bb0-9810-c623cf1630f6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentDebtSecuritiesMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_1c795ef9-f4de-4874-807d-b9c1c976e615" xlink:to="loc_us-gaap_USGovernmentDebtSecuritiesMember_89892a71-516b-4bb0-9810-c623cf1630f6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommercialPaperMember_c1f2be9a-b5f4-4856-9bf7-de13d044b2a5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommercialPaperMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_1c795ef9-f4de-4874-807d-b9c1c976e615" xlink:to="loc_us-gaap_CommercialPaperMember_c1f2be9a-b5f4-4856-9bf7-de13d044b2a5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USGovernmentAgenciesDebtSecuritiesMember_a69433fd-51fc-44f4-85a7-c179bb7e032d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_USGovernmentAgenciesDebtSecuritiesMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_1c795ef9-f4de-4874-807d-b9c1c976e615" xlink:to="loc_us-gaap_USGovernmentAgenciesDebtSecuritiesMember_a69433fd-51fc-44f4-85a7-c179bb7e032d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateDebtSecuritiesMember_24eb96de-1ea0-4654-b2f0-792a8e8879d6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CorporateDebtSecuritiesMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_1c795ef9-f4de-4874-807d-b9c1c976e615" xlink:to="loc_us-gaap_CorporateDebtSecuritiesMember_24eb96de-1ea0-4654-b2f0-792a8e8879d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalNotesMember_1c36dcc3-e6c2-4839-9fa6-14a0509efb71" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MunicipalNotesMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_1c795ef9-f4de-4874-807d-b9c1c976e615" xlink:to="loc_us-gaap_MunicipalNotesMember_1c36dcc3-e6c2-4839-9fa6-14a0509efb71" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_f15140b3-4676-4f06-9e86-65ad221475f5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d7047ec-3954-42fb-844a-0c1e620aed72" xlink:to="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_f15140b3-4676-4f06-9e86-65ad221475f5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_ebb5adec-f300-46d8-a6ee-5704982da59c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_f15140b3-4676-4f06-9e86-65ad221475f5" xlink:to="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_ebb5adec-f300-46d8-a6ee-5704982da59c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel1Member_8f86c367-731d-460f-b01a-5bc0aa84ffe8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueInputsLevel1Member"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_ebb5adec-f300-46d8-a6ee-5704982da59c" xlink:to="loc_us-gaap_FairValueInputsLevel1Member_8f86c367-731d-460f-b01a-5bc0aa84ffe8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel2Member_6a424011-123a-4081-a8da-3a82f1d32ce5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueInputsLevel2Member"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_ebb5adec-f300-46d8-a6ee-5704982da59c" xlink:to="loc_us-gaap_FairValueInputsLevel2Member_6a424011-123a-4081-a8da-3a82f1d32ce5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_7bfc38bb-11e1-47a9-a368-05f6914cb5c7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d7047ec-3954-42fb-844a-0c1e620aed72" xlink:to="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_7bfc38bb-11e1-47a9-a368-05f6914cb5c7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashEquivalentsAtCarryingValue_6626f6af-158f-4a2f-9dbd-36009c82e2e8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CashEquivalentsAtCarryingValue"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_7bfc38bb-11e1-47a9-a368-05f6914cb5c7" xlink:to="loc_us-gaap_CashEquivalentsAtCarryingValue_6626f6af-158f-4a2f-9dbd-36009c82e2e8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_39599d56-1a0b-4850-af6c-41aaab0aea04" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_7bfc38bb-11e1-47a9-a368-05f6914cb5c7" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent_39599d56-1a0b-4850-af6c-41aaab0aea04" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsFairValueDisclosure_7b441aff-2ee4-4175-b210-c5eab6c15a26" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AssetsFairValueDisclosure"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_7bfc38bb-11e1-47a9-a368-05f6914cb5c7" xlink:to="loc_us-gaap_AssetsFairValueDisclosure_7b441aff-2ee4-4175-b210-c5eab6c15a26" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsAccountsReceivableDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsAccountsReceivableDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsAccountsReceivableDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_b8328c74-7fac-4993-b4ef-4029f69d717d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetRelatedDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableNetCurrentAbstract_6dd0b94e-29ec-4062-9c32-6d8375b82725" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsReceivableNetCurrentAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_b8328c74-7fac-4993-b4ef-4029f69d717d" xlink:to="loc_us-gaap_AccountsReceivableNetCurrentAbstract_6dd0b94e-29ec-4062-9c32-6d8375b82725" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableGrossCurrent_2f8da037-0f3b-48a9-9e4f-e8776cb7006d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsReceivableGrossCurrent"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountsReceivableNetCurrentAbstract_6dd0b94e-29ec-4062-9c32-6d8375b82725" xlink:to="loc_us-gaap_AccountsReceivableGrossCurrent_2f8da037-0f3b-48a9-9e4f-e8776cb7006d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent_45cd8de6-d522-47ec-96ad-7f5da225a0a9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountsReceivableNetCurrentAbstract_6dd0b94e-29ec-4062-9c32-6d8375b82725" xlink:to="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent_45cd8de6-d522-47ec-96ad-7f5da225a0a9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableNetCurrent_f6564c27-2909-4aa1-a920-34571b2aa733" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsReceivableNetCurrent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountsReceivableNetCurrentAbstract_6dd0b94e-29ec-4062-9c32-6d8375b82725" xlink:to="loc_us-gaap_AccountsReceivableNetCurrent_f6564c27-2909-4aa1-a920-34571b2aa733" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsAllowanceandProductReturnReserveDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_2a7dc424-6696-4638-aff2-8568754772dc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetRelatedDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_88d2bb1b-24af-4f31-aef9-6e046efaa9cf" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ValuationAndQualifyingAccountsDisclosureTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_2a7dc424-6696-4638-aff2-8568754772dc" xlink:to="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_88d2bb1b-24af-4f31-aef9-6e046efaa9cf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_f6bfd6d5-36cd-43bc-ae70-ca5c7caf1c9f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesTypeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_88d2bb1b-24af-4f31-aef9-6e046efaa9cf" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_f6bfd6d5-36cd-43bc-ae70-ca5c7caf1c9f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDomain_7aae4d14-5441-4f9c-a0be-1b9067dcc024" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_f6bfd6d5-36cd-43bc-ae70-ca5c7caf1c9f" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesDomain_7aae4d14-5441-4f9c-a0be-1b9067dcc024" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForCreditLossMember_35d11e99-4d97-4fea-9cb5-4e07d798af71" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AllowanceForCreditLossMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDomain_7aae4d14-5441-4f9c-a0be-1b9067dcc024" xlink:to="loc_us-gaap_AllowanceForCreditLossMember_35d11e99-4d97-4fea-9cb5-4e07d798af71" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SECSchedule1209ReserveProductReturnsMember_a7bc622a-d913-4cc0-8737-ac070ed36d93" xlink:href="calx-20221231.xsd#calx_SECSchedule1209ReserveProductReturnsMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDomain_7aae4d14-5441-4f9c-a0be-1b9067dcc024" xlink:to="loc_calx_SECSchedule1209ReserveProductReturnsMember_a7bc622a-d913-4cc0-8737-ac070ed36d93" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_a07c8de2-7ba6-42f6-8194-3710c69cac82" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ValuationAndQualifyingAccountsDisclosureLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_88d2bb1b-24af-4f31-aef9-6e046efaa9cf" xlink:to="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_a07c8de2-7ba6-42f6-8194-3710c69cac82" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_75fc3379-032e-46bd-a294-b6afbca158cd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MovementInValuationAllowancesAndReservesRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_a07c8de2-7ba6-42f6-8194-3710c69cac82" xlink:to="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_75fc3379-032e-46bd-a294-b6afbca158cd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance_917143fc-bebc-47c6-9184-4fb043b073cf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesBalance"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_75fc3379-032e-46bd-a294-b6afbca158cd" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesBalance_917143fc-bebc-47c6-9184-4fb043b073cf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_8a43fcd6-0d5a-4acf-8cc4-725e046e9f11" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_75fc3379-032e-46bd-a294-b6afbca158cd" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_8a43fcd6-0d5a-4acf-8cc4-725e046e9f11" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDeductions_ccb004da-14f2-4706-ac13-7b37acc4b3ae" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesDeductions"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_75fc3379-032e-46bd-a294-b6afbca158cd" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesDeductions_ccb004da-14f2-4706-ac13-7b37acc4b3ae" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance_f558df66-6023-4764-8baa-bafa96625fd6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowancesAndReservesBalance"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_75fc3379-032e-46bd-a294-b6afbca158cd" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesBalance_f558df66-6023-4764-8baa-bafa96625fd6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsInventoryDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsInventoryDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsInventoryDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_4fe50444-4692-475a-b69c-1b3a1c7a7534" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetRelatedDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryNetAbstract_654f3435-1c45-4c63-bb13-9fb2a826a63f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InventoryNetAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_4fe50444-4692-475a-b69c-1b3a1c7a7534" xlink:to="loc_us-gaap_InventoryNetAbstract_654f3435-1c45-4c63-bb13-9fb2a826a63f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryRawMaterialsNetOfReserves_33fca0bf-ce35-471a-be17-58dc6c75d9af" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InventoryRawMaterialsNetOfReserves"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_InventoryNetAbstract_654f3435-1c45-4c63-bb13-9fb2a826a63f" xlink:to="loc_us-gaap_InventoryRawMaterialsNetOfReserves_33fca0bf-ce35-471a-be17-58dc6c75d9af" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryFinishedGoodsNetOfReserves_ad335089-208d-4a43-a8d9-afe7e5ae0ad8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InventoryFinishedGoodsNetOfReserves"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_InventoryNetAbstract_654f3435-1c45-4c63-bb13-9fb2a826a63f" xlink:to="loc_us-gaap_InventoryFinishedGoodsNetOfReserves_ad335089-208d-4a43-a8d9-afe7e5ae0ad8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryNet_5e93a529-d385-4843-a44b-bcf2747e1899" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_InventoryNet"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_InventoryNetAbstract_654f3435-1c45-4c63-bb13-9fb2a826a63f" xlink:to="loc_us-gaap_InventoryNet_5e93a529-d385-4843-a44b-bcf2747e1899" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TextBlockAbstract_43d6debb-07ad-4f79-925d-72f659284e41" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TextBlockAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DepositsAssetsCurrent_e0a5365d-bd2c-451e-af93-95316e625390" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DepositsAssetsCurrent"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TextBlockAbstract_43d6debb-07ad-4f79-925d-72f659284e41" xlink:to="loc_us-gaap_DepositsAssetsCurrent_e0a5365d-bd2c-451e-af93-95316e625390" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent_a3d12e9d-1b4b-4c8a-af6e-6ca84576b530" xlink:href="calx-20221231.xsd#calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TextBlockAbstract_43d6debb-07ad-4f79-925d-72f659284e41" xlink:to="loc_calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent_a3d12e9d-1b4b-4c8a-af6e-6ca84576b530" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_05226af7-9db6-43e1-bdf7-a3863f638b91" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TextBlockAbstract_43d6debb-07ad-4f79-925d-72f659284e41" xlink:to="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_05226af7-9db6-43e1-bdf7-a3863f638b91" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsPropertyandEquipmentnetDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_a2ab93ab-02fe-4d26-8670-ce30565f221c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetRelatedDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_e59f9a32-0b3b-44f4-8952-491ad6347b13" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfPropertyPlantAndEquipmentTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_a2ab93ab-02fe-4d26-8670-ce30565f221c" xlink:to="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_e59f9a32-0b3b-44f4-8952-491ad6347b13" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_51af387c-7cad-40ce-ad8b-84fa6cd0ef5b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_e59f9a32-0b3b-44f4-8952-491ad6347b13" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_51af387c-7cad-40ce-ad8b-84fa6cd0ef5b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ecebac2c-b6cb-46c1-8923-4dd34f949a24" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_51af387c-7cad-40ce-ad8b-84fa6cd0ef5b" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ecebac2c-b6cb-46c1-8923-4dd34f949a24" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquipmentMember_90a0bda9-78d0-4c27-b986-505276d650d3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquipmentMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ecebac2c-b6cb-46c1-8923-4dd34f949a24" xlink:to="loc_us-gaap_EquipmentMember_90a0bda9-78d0-4c27-b986-505276d650d3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComputerEquipmentMember_f471e3ad-3e9f-4143-b7ef-72ce64fa61d6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ComputerEquipmentMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ecebac2c-b6cb-46c1-8923-4dd34f949a24" xlink:to="loc_us-gaap_ComputerEquipmentMember_f471e3ad-3e9f-4143-b7ef-72ce64fa61d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SoftwareMember_203f0b0e-48c5-4336-ae55-d29fff096748" xlink:href="calx-20221231.xsd#calx_SoftwareMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ecebac2c-b6cb-46c1-8923-4dd34f949a24" xlink:to="loc_calx_SoftwareMember_203f0b0e-48c5-4336-ae55-d29fff096748" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeaseholdImprovementsMember_440bfe96-818e-47fb-b8e4-747962460835" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LeaseholdImprovementsMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ecebac2c-b6cb-46c1-8923-4dd34f949a24" xlink:to="loc_us-gaap_LeaseholdImprovementsMember_440bfe96-818e-47fb-b8e4-747962460835" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FurnitureAndFixturesMember_faff79b6-501f-47b1-93b4-7df272150aa8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FurnitureAndFixturesMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ecebac2c-b6cb-46c1-8923-4dd34f949a24" xlink:to="loc_us-gaap_FurnitureAndFixturesMember_faff79b6-501f-47b1-93b4-7df272150aa8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentLineItems_cb9ae062-0a5a-4023-92de-daf2946bfd0f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_e59f9a32-0b3b-44f4-8952-491ad6347b13" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentLineItems_cb9ae062-0a5a-4023-92de-daf2946bfd0f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentGross_62347b7a-b149-407f-983b-7ddd868809e0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentGross"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_cb9ae062-0a5a-4023-92de-daf2946bfd0f" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentGross_62347b7a-b149-407f-983b-7ddd868809e0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_1c5bd084-11eb-4ec2-9e36-656b94940168" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_cb9ae062-0a5a-4023-92de-daf2946bfd0f" xlink:to="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_1c5bd084-11eb-4ec2-9e36-656b94940168" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_2bf159be-9b98-480a-ad8f-ff4a9e051c90" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_cb9ae062-0a5a-4023-92de-daf2946bfd0f" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentNet_2bf159be-9b98-480a-ad8f-ff4a9e051c90" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Depreciation_ddf53540-5863-4786-a030-63d8da9200a5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_Depreciation"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_a2ab93ab-02fe-4d26-8670-ce30565f221c" xlink:to="loc_us-gaap_Depreciation_ddf53540-5863-4786-a030-63d8da9200a5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsIntangibleAssetAcquisitionDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_7716d206-4a65-42dc-a35c-d03c25334e00" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetRelatedDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_20a1f7e2-bc3f-4e25-972d-2bb711c9213c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_7716d206-4a65-42dc-a35c-d03c25334e00" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_20a1f7e2-bc3f-4e25-972d-2bb711c9213c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_8ed85f4b-7416-4e53-bf33-3be1ac307c9e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_20a1f7e2-bc3f-4e25-972d-2bb711c9213c" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_8ed85f4b-7416-4e53-bf33-3be1ac307c9e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_ba5e0fad-b553-4655-94aa-415fb0b37163" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_8ed85f4b-7416-4e53-bf33-3be1ac307c9e" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_ba5e0fad-b553-4655-94aa-415fb0b37163" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComputerSoftwareIntangibleAssetMember_0cf0f229-cfdb-4cdf-a667-28081748ec52" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ComputerSoftwareIntangibleAssetMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_ba5e0fad-b553-4655-94aa-415fb0b37163" xlink:to="loc_us-gaap_ComputerSoftwareIntangibleAssetMember_0cf0f229-cfdb-4cdf-a667-28081748ec52" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_FiniteLivedIntangibleAssetsLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_20a1f7e2-bc3f-4e25-972d-2bb711c9213c" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill_0f164e98-be04-493e-9974-bd672a177d45" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IntangibleAssetsNetExcludingGoodwill"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:to="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill_0f164e98-be04-493e-9974-bd672a177d45" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAssetsMiscellaneousNoncurrent_262f361f-88a0-4a2a-99ff-9f55f38a38dc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherAssetsMiscellaneousNoncurrent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:to="loc_us-gaap_OtherAssetsMiscellaneousNoncurrent_262f361f-88a0-4a2a-99ff-9f55f38a38dc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAssetsNoncurrent_bdff09bb-1b64-4d4a-84cb-c0a5f7f5db3a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherAssetsNoncurrent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:to="loc_us-gaap_OtherAssetsNoncurrent_bdff09bb-1b64-4d4a-84cb-c0a5f7f5db3a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RoyaltyGuaranteesCommitmentsAmount_13076a5a-c056-4260-9e0f-33f7e9d04b93" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RoyaltyGuaranteesCommitmentsAmount"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:to="loc_us-gaap_RoyaltyGuaranteesCommitmentsAmount_13076a5a-c056-4260-9e0f-33f7e9d04b93" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherLiabilities_0c0703fa-6468-4a1f-b065-3171a46445c0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherLiabilities"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:to="loc_us-gaap_OtherLiabilities_0c0703fa-6468-4a1f-b065-3171a46445c0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent_80a76d66-e71c-424e-b3ec-0d88efda1ce0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccruedLiabilitiesCurrent"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:to="loc_us-gaap_AccruedLiabilitiesCurrent_80a76d66-e71c-424e-b3ec-0d88efda1ce0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherLiabilitiesNoncurrent_4f2115a7-af2c-4b5d-96e3-b88d68124e1a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherLiabilitiesNoncurrent"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_34d43079-c5ad-424a-ba94-bb6002e3a52a" xlink:to="loc_us-gaap_OtherLiabilitiesNoncurrent_4f2115a7-af2c-4b5d-96e3-b88d68124e1a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsAccruedLiabilitiesDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_a4560bc2-47ef-4a2b-92ab-e1d32b551650" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetRelatedDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList_dbd31209-c6d2-469d-aeed-808ca9256284" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_a4560bc2-47ef-4a2b-92ab-e1d32b551650" xlink:to="loc_us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList_dbd31209-c6d2-469d-aeed-808ca9256284" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_331e54cc-0e79-4d9d-9669-8bdfd29a4604" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccruedLiabilitiesCurrentAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_a4560bc2-47ef-4a2b-92ab-e1d32b551650" xlink:to="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_331e54cc-0e79-4d9d-9669-8bdfd29a4604" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeRelatedLiabilitiesCurrent_12d96da7-95c7-4199-a99a-296fbc05d3e9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_331e54cc-0e79-4d9d-9669-8bdfd29a4604" xlink:to="loc_us-gaap_EmployeeRelatedLiabilitiesCurrent_12d96da7-95c7-4199-a99a-296fbc05d3e9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer_33fc57f9-b517-4b6a-835b-2430e9637be1" xlink:href="calx-20221231.xsd#calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_331e54cc-0e79-4d9d-9669-8bdfd29a4604" xlink:to="loc_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer_33fc57f9-b517-4b6a-835b-2430e9637be1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedProfessionalFeesCurrent_0eeaaf63-6d63-41ca-9324-782c6b88833d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccruedProfessionalFeesCurrent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_331e54cc-0e79-4d9d-9669-8bdfd29a4604" xlink:to="loc_us-gaap_AccruedProfessionalFeesCurrent_0eeaaf63-6d63-41ca-9324-782c6b88833d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedRevenueSharePaymentsCurrent_643036d1-0b5d-43dd-9c86-75d33dd7923f" xlink:href="calx-20221231.xsd#calx_AccruedRevenueSharePaymentsCurrent"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_331e54cc-0e79-4d9d-9669-8bdfd29a4604" xlink:to="loc_calx_AccruedRevenueSharePaymentsCurrent_643036d1-0b5d-43dd-9c86-75d33dd7923f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent_13e87bfc-c6fc-472b-843b-efd55e79958c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProductWarrantyAccrualClassifiedCurrent"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_331e54cc-0e79-4d9d-9669-8bdfd29a4604" xlink:to="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent_13e87bfc-c6fc-472b-843b-efd55e79958c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedCustomerRebates_9c89a513-b45d-49b8-afdd-da654f300804" xlink:href="calx-20221231.xsd#calx_AccruedCustomerRebates"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_331e54cc-0e79-4d9d-9669-8bdfd29a4604" xlink:to="loc_calx_AccruedCustomerRebates_9c89a513-b45d-49b8-afdd-da654f300804" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes_ddfcbd3f-487e-4b69-80de-c43370274830" xlink:href="calx-20221231.xsd#calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_331e54cc-0e79-4d9d-9669-8bdfd29a4604" xlink:to="loc_calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes_ddfcbd3f-487e-4b69-80de-c43370274830" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityCurrent_a22568de-30e3-437e-af06-b652e1071448" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiabilityCurrent"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_331e54cc-0e79-4d9d-9669-8bdfd29a4604" xlink:to="loc_us-gaap_OperatingLeaseLiabilityCurrent_a22568de-30e3-437e-af06-b652e1071448" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedFreight_4d369ea4-f895-4374-b984-34e0a3b048fd" xlink:href="calx-20221231.xsd#calx_AccruedFreight"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_331e54cc-0e79-4d9d-9669-8bdfd29a4604" xlink:to="loc_calx_AccruedFreight_4d369ea4-f895-4374-b984-34e0a3b048fd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedBusinessEventsCurrent_cb9e0b5f-5c55-415a-a1ae-54436a5cfee5" xlink:href="calx-20221231.xsd#calx_AccruedBusinessEventsCurrent"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_331e54cc-0e79-4d9d-9669-8bdfd29a4604" xlink:to="loc_calx_AccruedBusinessEventsCurrent_cb9e0b5f-5c55-415a-a1ae-54436a5cfee5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ProductReturnReserveCurrent_0d871b56-3498-4e7f-8b36-20d2eb868e41" xlink:href="calx-20221231.xsd#calx_ProductReturnReserveCurrent"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_331e54cc-0e79-4d9d-9669-8bdfd29a4604" xlink:to="loc_calx_ProductReturnReserveCurrent_0d871b56-3498-4e7f-8b36-20d2eb868e41" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAccruedLiabilitiesCurrent_20cc4489-d100-4ab4-91eb-043f29ca0403" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherAccruedLiabilitiesCurrent"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_331e54cc-0e79-4d9d-9669-8bdfd29a4604" xlink:to="loc_us-gaap_OtherAccruedLiabilitiesCurrent_20cc4489-d100-4ab4-91eb-043f29ca0403" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent_223b547e-1919-49ac-9172-b852da700b3d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccruedLiabilitiesCurrent"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_331e54cc-0e79-4d9d-9669-8bdfd29a4604" xlink:to="loc_us-gaap_AccruedLiabilitiesCurrent_223b547e-1919-49ac-9172-b852da700b3d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsProductWarrantyActivityDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsProductWarrantyActivityDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsProductWarrantyActivityDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_2625c2f6-7adc-4641-96ba-c64f9ab26318" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetRelatedDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward_7a18cf69-2fdb-4b8d-b9df-8cd99ed618e9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_2625c2f6-7adc-4641-96ba-c64f9ab26318" xlink:to="loc_us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward_7a18cf69-2fdb-4b8d-b9df-8cd99ed618e9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrual_0cd5f8c2-a1aa-46d1-9ecf-d49d9905673e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProductWarrantyAccrual"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward_7a18cf69-2fdb-4b8d-b9df-8cd99ed618e9" xlink:to="loc_us-gaap_ProductWarrantyAccrual_0cd5f8c2-a1aa-46d1-9ecf-d49d9905673e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualWarrantiesIssued_33d2ef95-b31b-44ac-bdb0-462a55a1cb78" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProductWarrantyAccrualWarrantiesIssued"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward_7a18cf69-2fdb-4b8d-b9df-8cd99ed618e9" xlink:to="loc_us-gaap_ProductWarrantyAccrualWarrantiesIssued_33d2ef95-b31b-44ac-bdb0-462a55a1cb78" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualPayments_400562aa-e663-444e-ab5c-3c05bfb5133e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProductWarrantyAccrualPayments"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward_7a18cf69-2fdb-4b8d-b9df-8cd99ed618e9" xlink:to="loc_us-gaap_ProductWarrantyAccrualPayments_400562aa-e663-444e-ab5c-3c05bfb5133e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrual_9b6b48ef-46e8-4ac9-8e72-867867db2060" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ProductWarrantyAccrual"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward_7a18cf69-2fdb-4b8d-b9df-8cd99ed618e9" xlink:to="loc_us-gaap_ProductWarrantyAccrual_9b6b48ef-46e8-4ac9-8e72-867867db2060" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#BalanceSheetDetailsRestructuringDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_a3c1b62c-db09-4591-abbd-066e233ddba2" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_BalanceSheetRelatedDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_46b5c706-97d1-4507-8a42-e1b72f6a84a9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfRestructuringAndRelatedCostsTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetRelatedDisclosuresAbstract_a3c1b62c-db09-4591-abbd-066e233ddba2" xlink:to="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_46b5c706-97d1-4507-8a42-e1b72f6a84a9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringPlanAxis_40d3a3db-c943-414c-b849-c5fe6b45ec03" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringPlanAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_46b5c706-97d1-4507-8a42-e1b72f6a84a9" xlink:to="loc_us-gaap_RestructuringPlanAxis_40d3a3db-c943-414c-b849-c5fe6b45ec03" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringPlanDomain_9de90ba6-5969-4fa2-9ba3-4ddba0d559d0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringPlanDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringPlanAxis_40d3a3db-c943-414c-b849-c5fe6b45ec03" xlink:to="loc_us-gaap_RestructuringPlanDomain_9de90ba6-5969-4fa2-9ba3-4ddba0d559d0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember_3c53e291-3c23-4c04-a61c-c5c4d4a2678f" xlink:href="calx-20221231.xsd#calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringPlanDomain_9de90ba6-5969-4fa2-9ba3-4ddba0d559d0" xlink:to="loc_calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember_3c53e291-3c23-4c04-a61c-c5c4d4a2678f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_12cb3112-1004-4fd1-9f12-435027b62999" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_StatementGeographicalAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_46b5c706-97d1-4507-8a42-e1b72f6a84a9" xlink:to="loc_srt_StatementGeographicalAxis_12cb3112-1004-4fd1-9f12-435027b62999" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_ac3de07e-cbae-4129-aaa2-5cfd4d588160" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_StatementGeographicalAxis_12cb3112-1004-4fd1-9f12-435027b62999" xlink:to="loc_srt_SegmentGeographicalDomain_ac3de07e-cbae-4129-aaa2-5cfd4d588160" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SanJoseCaliforniaMember_81133e60-bcbb-4b53-b03d-e13ef95fcc0f" xlink:href="calx-20221231.xsd#calx_SanJoseCaliforniaMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_ac3de07e-cbae-4129-aaa2-5cfd4d588160" xlink:to="loc_calx_SanJoseCaliforniaMember_81133e60-bcbb-4b53-b03d-e13ef95fcc0f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveLineItems_443e1794-216b-4989-9381-d93237703cf4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringCostAndReserveLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_46b5c706-97d1-4507-8a42-e1b72f6a84a9" xlink:to="loc_us-gaap_RestructuringCostAndReserveLineItems_443e1794-216b-4989-9381-d93237703cf4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_a54e71f9-71db-4d33-8e9e-1d6eeecde72c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringCharges"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems_443e1794-216b-4989-9381-d93237703cf4" xlink:to="loc_us-gaap_RestructuringCharges_a54e71f9-71db-4d33-8e9e-1d6eeecde72c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserve_3fe6bd72-2695-4df2-a6ee-6f6315319ae6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RestructuringReserve"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems_443e1794-216b-4989-9381-d93237703cf4" xlink:to="loc_us-gaap_RestructuringReserve_3fe6bd72-2695-4df2-a6ee-6f6315319ae6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#CommitmentsandContingenciesOperatingLeaseDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_e51d8ba7-ed78-428a-bfd7-6a38aff50bf5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommitmentsAndContingenciesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_9591f7fe-22de-4787-9d1a-e5e288b12c51" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_e51d8ba7-ed78-428a-bfd7-6a38aff50bf5" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_9591f7fe-22de-4787-9d1a-e5e288b12c51" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_d2ad5740-24ca-4114-89a0-39e9ef085888" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_e51d8ba7-ed78-428a-bfd7-6a38aff50bf5" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_d2ad5740-24ca-4114-89a0-39e9ef085888" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_3d49655b-ad5c-4b26-801a-757d08f2d378" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_e51d8ba7-ed78-428a-bfd7-6a38aff50bf5" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_3d49655b-ad5c-4b26-801a-757d08f2d378" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_16d63d01-e8b6-4138-aa5a-ef0d6f95f2f2" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_e51d8ba7-ed78-428a-bfd7-6a38aff50bf5" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_16d63d01-e8b6-4138-aa5a-ef0d6f95f2f2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_36d5a6d4-b7fd-446c-a19d-16281c62496f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_e51d8ba7-ed78-428a-bfd7-6a38aff50bf5" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_36d5a6d4-b7fd-446c-a19d-16281c62496f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount_6f0e53ba-9726-4a32-9075-d7776132a3e0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_e51d8ba7-ed78-428a-bfd7-6a38aff50bf5" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount_6f0e53ba-9726-4a32-9075-d7776132a3e0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiability_6c13d72a-489e-420c-82f8-8d0c47357f95" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiability"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_e51d8ba7-ed78-428a-bfd7-6a38aff50bf5" xlink:to="loc_us-gaap_OperatingLeaseLiability_6c13d72a-489e-420c-82f8-8d0c47357f95" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails_1" xlink:type="simple" xlink:href="calx-20221231.xsd#CommitmentsandContingenciesOperatingLeaseDetails_1"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails_1" xlink:type="extended"/>
  <link:roleRef roleURI="http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#CommitmentsandContingenciesSubleaseDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_986210f2-c29c-4ed5-af9b-b247c91ff2a6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommitmentsAndContingenciesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeaseTermOfContract_3abdcdd3-3cc6-4713-b5f5-654314403fb6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeaseTermOfContract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_986210f2-c29c-4ed5-af9b-b247c91ff2a6" xlink:to="loc_us-gaap_LessorOperatingLeaseTermOfContract_3abdcdd3-3cc6-4713-b5f5-654314403fb6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths_d2cd5417-caa7-4ab6-881b-50050bd9f70f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_986210f2-c29c-4ed5-af9b-b247c91ff2a6" xlink:to="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths_d2cd5417-caa7-4ab6-881b-50050bd9f70f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears_e92c2075-3fb0-4996-bd49-8024a5e8f951" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_986210f2-c29c-4ed5-af9b-b247c91ff2a6" xlink:to="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears_e92c2075-3fb0-4996-bd49-8024a5e8f951" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears_9db20807-142a-406a-9937-c4bb458baf93" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_986210f2-c29c-4ed5-af9b-b247c91ff2a6" xlink:to="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears_9db20807-142a-406a-9937-c4bb458baf93" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceived_a13789e5-d2b1-4cab-b8f3-6188c72043e5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LessorOperatingLeasePaymentsToBeReceived"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_986210f2-c29c-4ed5-af9b-b247c91ff2a6" xlink:to="loc_us-gaap_LessorOperatingLeasePaymentsToBeReceived_a13789e5-d2b1-4cab-b8f3-6188c72043e5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseLiabilityDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#CommitmentsandContingenciesOperatingLeaseLiabilityDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseLiabilityDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_52178260-b2ff-47bb-b99e-f5ad5478c935" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommitmentsAndContingenciesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList_eaba5b42-c0fe-4619-bd59-9267a02e7f2e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_52178260-b2ff-47bb-b99e-f5ad5478c935" xlink:to="loc_us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList_eaba5b42-c0fe-4619-bd59-9267a02e7f2e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityCurrent_5dfb4efd-a122-4f05-a816-4ddb76b42c05" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiabilityCurrent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_52178260-b2ff-47bb-b99e-f5ad5478c935" xlink:to="loc_us-gaap_OperatingLeaseLiabilityCurrent_5dfb4efd-a122-4f05-a816-4ddb76b42c05" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_2874570e-a7a1-4859-9edc-a60fde055fdc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_52178260-b2ff-47bb-b99e-f5ad5478c935" xlink:to="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_2874570e-a7a1-4859-9edc-a60fde055fdc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiability_64733c71-406a-4b3b-97ec-13d3f3f80928" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseLiability"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_52178260-b2ff-47bb-b99e-f5ad5478c935" xlink:to="loc_us-gaap_OperatingLeaseLiability_64733c71-406a-4b3b-97ec-13d3f3f80928" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/CommitmentsandContingenciesTextualDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#CommitmentsandContingenciesTextualDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/CommitmentsandContingenciesTextualDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_132073cb-4545-482c-8baf-f6c1eae05575" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommitmentsAndContingenciesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LossContingenciesTable_e9c757bd-5e67-4276-83da-e8316dd6936e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LossContingenciesTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_132073cb-4545-482c-8baf-f6c1eae05575" xlink:to="loc_us-gaap_LossContingenciesTable_e9c757bd-5e67-4276-83da-e8316dd6936e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_b90a025c-8dbf-4983-844d-0ef3afd18cab" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_StatementGeographicalAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LossContingenciesTable_e9c757bd-5e67-4276-83da-e8316dd6936e" xlink:to="loc_srt_StatementGeographicalAxis_b90a025c-8dbf-4983-844d-0ef3afd18cab" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_549a869b-7dd7-4ad0-ace2-4d082b8b3bce" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_StatementGeographicalAxis_b90a025c-8dbf-4983-844d-0ef3afd18cab" xlink:to="loc_srt_SegmentGeographicalDomain_549a869b-7dd7-4ad0-ace2-4d082b8b3bce" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SanJoseCaliforniaMember_7a96e0b4-f855-4451-bc77-831f4c27df08" xlink:href="calx-20221231.xsd#calx_SanJoseCaliforniaMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_549a869b-7dd7-4ad0-ace2-4d082b8b3bce" xlink:to="loc_calx_SanJoseCaliforniaMember_7a96e0b4-f855-4451-bc77-831f4c27df08" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LossContingenciesLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LossContingenciesTable_e9c757bd-5e67-4276-83da-e8316dd6936e" xlink:to="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_542b0382-54fb-41a4-99e3-8a34ff8b776f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_542b0382-54fb-41a4-99e3-8a34ff8b776f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_22b8391d-37d0-4b62-8236-cfdb039cc478" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_22b8391d-37d0-4b62-8236-cfdb039cc478" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_020e779c-b5cf-40b7-9126-7ed8b4a8f758" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_020e779c-b5cf-40b7-9126-7ed8b4a8f758" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseCost_e4d2923a-6940-45b8-a645-b94d7002113d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeaseCost"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_us-gaap_OperatingLeaseCost_e4d2923a-6940-45b8-a645-b94d7002113d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeasePayments_4562699b-9df5-4e5b-95a3-45a13e3e8640" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLeasePayments"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_us-gaap_OperatingLeasePayments_4562699b-9df5-4e5b-95a3-45a13e3e8640" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted_a0527839-e8b5-4a9e-ac1c-5990c8f56878" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted_a0527839-e8b5-4a9e-ac1c-5990c8f56878" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer_9c2687de-ddef-41d1-9e57-2cd4034011f9" xlink:href="calx-20221231.xsd#calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer_9c2687de-ddef-41d1-9e57-2cd4034011f9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubleaseIncome_5d92cb29-2b54-447c-96f9-1057562921a8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubleaseIncome"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LossContingenciesLineItems_0ebf4805-2153-496c-af71-0795fafd9f92" xlink:to="loc_us-gaap_SubleaseIncome_5d92cb29-2b54-447c-96f9-1057562921a8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_0d5fd5c5-63fb-4cf9-a4fc-3bc921704085" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_5515e223-6a4e-4ea9-aad7-99905b3b0ae5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_0d5fd5c5-63fb-4cf9-a4fc-3bc921704085" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_5515e223-6a4e-4ea9-aad7-99905b3b0ae5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsidiarySaleOfStockAxis_a12b26bf-2b14-4653-9bf0-6ecf215bc61a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubsidiarySaleOfStockAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_5515e223-6a4e-4ea9-aad7-99905b3b0ae5" xlink:to="loc_us-gaap_SubsidiarySaleOfStockAxis_a12b26bf-2b14-4653-9bf0-6ecf215bc61a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SaleOfStockNameOfTransactionDomain_8cc05cf2-d6b9-4018-be60-dff737158c04" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SaleOfStockNameOfTransactionDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SubsidiarySaleOfStockAxis_a12b26bf-2b14-4653-9bf0-6ecf215bc61a" xlink:to="loc_us-gaap_SaleOfStockNameOfTransactionDomain_8cc05cf2-d6b9-4018-be60-dff737158c04" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PublicStockOfferingMember_6a7e1e62-e08f-4d74-8899-60bee46c43e4" xlink:href="calx-20221231.xsd#calx_PublicStockOfferingMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SaleOfStockNameOfTransactionDomain_8cc05cf2-d6b9-4018-be60-dff737158c04" xlink:to="loc_calx_PublicStockOfferingMember_6a7e1e62-e08f-4d74-8899-60bee46c43e4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OverAllotmentOptionMember_d01afc1f-2066-40c7-832f-db102ed994e7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OverAllotmentOptionMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SaleOfStockNameOfTransactionDomain_8cc05cf2-d6b9-4018-be60-dff737158c04" xlink:to="loc_us-gaap_OverAllotmentOptionMember_d01afc1f-2066-40c7-832f-db102ed994e7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_5515e223-6a4e-4ea9-aad7-99905b3b0ae5" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesAuthorized_711b2ea0-35a5-47da-bbe6-95055653d942" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockSharesAuthorized"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:to="loc_us-gaap_PreferredStockSharesAuthorized_711b2ea0-35a5-47da-bbe6-95055653d942" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesIssued_44e6a272-aeea-4cf8-9c52-4b1383ce27d2" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockSharesIssued"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:to="loc_us-gaap_PreferredStockSharesIssued_44e6a272-aeea-4cf8-9c52-4b1383ce27d2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesOutstanding_3e73d72d-8b47-4502-b8f6-70a7dd91a874" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PreferredStockSharesOutstanding"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:to="loc_us-gaap_PreferredStockSharesOutstanding_3e73d72d-8b47-4502-b8f6-70a7dd91a874" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockDividendsPerShareDeclared_a0bccdc5-a057-462a-869a-19b7052186d0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockDividendsPerShareDeclared"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:to="loc_us-gaap_CommonStockDividendsPerShareDeclared_a0bccdc5-a057-462a-869a-19b7052186d0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction_06218a67-b704-47fe-a87b-46015626f17a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:to="loc_us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction_06218a67-b704-47fe-a87b-46015626f17a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockParOrStatedValuePerShare_d00a23a7-85ed-44c4-a7c2-14192f0e1a9f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockParOrStatedValuePerShare"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:to="loc_us-gaap_CommonStockParOrStatedValuePerShare_d00a23a7-85ed-44c4-a7c2-14192f0e1a9f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SaleOfStockConsiderationReceivedOnTransaction_f46e0943-edc0-4f48-8de7-1c8f21cee83c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SaleOfStockConsiderationReceivedOnTransaction"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bd402520-dbe3-45bd-81cd-a72bbdbedf4d" xlink:to="loc_us-gaap_SaleOfStockConsiderationReceivedOnTransaction_f46e0943-edc0-4f48-8de7-1c8f21cee83c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityStockRepurchaseProgramDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityStockRepurchaseProgramDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/StockholdersEquityStockRepurchaseProgramDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_be93792b-cd8c-40e7-8116-b2ad5adc7590" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchaseProgramPeriodInForce1_b77fa7ec-71a6-42a8-9e35-fd0da8ac99de" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockRepurchaseProgramPeriodInForce1"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_be93792b-cd8c-40e7-8116-b2ad5adc7590" xlink:to="loc_us-gaap_StockRepurchaseProgramPeriodInForce1_b77fa7ec-71a6-42a8-9e35-fd0da8ac99de" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchaseProgramAuthorizedAmount1_a920606a-732f-4b6c-ad2c-0b7abf356e10" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockRepurchaseProgramAuthorizedAmount1"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_be93792b-cd8c-40e7-8116-b2ad5adc7590" xlink:to="loc_us-gaap_StockRepurchaseProgramAuthorizedAmount1_a920606a-732f-4b6c-ad2c-0b7abf356e10" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityEquityIncentivePlansDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_2fb96f31-4f10-4431-a80b-901aa3b27130" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2f3e7376-e11c-4afd-8a02-c7c5f4fd6506" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_2fb96f31-4f10-4431-a80b-901aa3b27130" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2f3e7376-e11c-4afd-8a02-c7c5f4fd6506" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameAxis_2b85119c-f87f-4e03-92da-26a5046ff8a3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2f3e7376-e11c-4afd-8a02-c7c5f4fd6506" xlink:to="loc_us-gaap_PlanNameAxis_2b85119c-f87f-4e03-92da-26a5046ff8a3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameDomain_ef32a9dd-f772-4d48-b9f2-9d4f817135d5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PlanNameAxis_2b85119c-f87f-4e03-92da-26a5046ff8a3" xlink:to="loc_us-gaap_PlanNameDomain_ef32a9dd-f772-4d48-b9f2-9d4f817135d5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2019EquityIncentiveAwardPlanMember_16e918fa-6461-4bf7-9017-bc55e17adfd2" xlink:href="calx-20221231.xsd#calx_A2019EquityIncentiveAwardPlanMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PlanNameDomain_ef32a9dd-f772-4d48-b9f2-9d4f817135d5" xlink:to="loc_calx_A2019EquityIncentiveAwardPlanMember_16e918fa-6461-4bf7-9017-bc55e17adfd2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2021PerformanceTargetsMember_66f916f4-2963-4c27-8ce1-399df7c23cf5" xlink:href="calx-20221231.xsd#calx_A2021PerformanceTargetsMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PlanNameDomain_ef32a9dd-f772-4d48-b9f2-9d4f817135d5" xlink:to="loc_calx_A2021PerformanceTargetsMember_66f916f4-2963-4c27-8ce1-399df7c23cf5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_8a72b450-5305-4a10-953d-26407525bdb3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AwardTypeAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2f3e7376-e11c-4afd-8a02-c7c5f4fd6506" xlink:to="loc_us-gaap_AwardTypeAxis_8a72b450-5305-4a10-953d-26407525bdb3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_03c2e0e3-efe2-4b72-9685-30bdb94dd14e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AwardTypeAxis_8a72b450-5305-4a10-953d-26407525bdb3" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_03c2e0e3-efe2-4b72-9685-30bdb94dd14e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_f3fe978d-3a68-4e1e-bc10-b08fcaae099e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_03c2e0e3-efe2-4b72-9685-30bdb94dd14e" xlink:to="loc_us-gaap_EmployeeStockOptionMember_f3fe978d-3a68-4e1e-bc10-b08fcaae099e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PerformanceBasedStockOptionsMember_b6e6c4cb-4b8e-4c0f-a4a2-63b849ed2dd0" xlink:href="calx-20221231.xsd#calx_PerformanceBasedStockOptionsMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_03c2e0e3-efe2-4b72-9685-30bdb94dd14e" xlink:to="loc_calx_PerformanceBasedStockOptionsMember_b6e6c4cb-4b8e-4c0f-a4a2-63b849ed2dd0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_VestingAxis_72c08cbf-88f8-41fc-bc97-d648ab75acf7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_VestingAxis"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2f3e7376-e11c-4afd-8a02-c7c5f4fd6506" xlink:to="loc_us-gaap_VestingAxis_72c08cbf-88f8-41fc-bc97-d648ab75acf7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_VestingDomain_ff7ce7ac-7809-4615-934c-54c4b94eab12" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_VestingDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_VestingAxis_72c08cbf-88f8-41fc-bc97-d648ab75acf7" xlink:to="loc_us-gaap_VestingDomain_ff7ce7ac-7809-4615-934c-54c4b94eab12" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationAwardTrancheOneMember_92314dd0-dac7-43fc-aaf0-b270969a3a74" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationAwardTrancheOneMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_VestingDomain_ff7ce7ac-7809-4615-934c-54c4b94eab12" xlink:to="loc_us-gaap_ShareBasedCompensationAwardTrancheOneMember_92314dd0-dac7-43fc-aaf0-b270969a3a74" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationAwardTrancheTwoMember_654127c8-2c49-4f93-8cd4-7cded749b9e0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationAwardTrancheTwoMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_VestingDomain_ff7ce7ac-7809-4615-934c-54c4b94eab12" xlink:to="loc_us-gaap_ShareBasedCompensationAwardTrancheTwoMember_654127c8-2c49-4f93-8cd4-7cded749b9e0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_TitleOfIndividualAxis_aa9eccbf-3468-4acb-aab3-b4a081f7dbf2" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_TitleOfIndividualAxis"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2f3e7376-e11c-4afd-8a02-c7c5f4fd6506" xlink:to="loc_srt_TitleOfIndividualAxis_aa9eccbf-3468-4acb-aab3-b4a081f7dbf2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_TitleOfIndividualWithRelationshipToEntityDomain_a4c9efde-6edb-4884-b29a-cb6ad523841d" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_TitleOfIndividualAxis_aa9eccbf-3468-4acb-aab3-b4a081f7dbf2" xlink:to="loc_srt_TitleOfIndividualWithRelationshipToEntityDomain_a4c9efde-6edb-4884-b29a-cb6ad523841d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ExecutiveOfficerMember_c60c54e5-6863-439f-962b-6634de7e4a18" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_ExecutiveOfficerMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_TitleOfIndividualWithRelationshipToEntityDomain_a4c9efde-6edb-4884-b29a-cb6ad523841d" xlink:to="loc_srt_ExecutiveOfficerMember_c60c54e5-6863-439f-962b-6634de7e4a18" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeAxis_22d15f60-23b9-4192-b278-d764436494b1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubsequentEventTypeAxis"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2f3e7376-e11c-4afd-8a02-c7c5f4fd6506" xlink:to="loc_us-gaap_SubsequentEventTypeAxis_22d15f60-23b9-4192-b278-d764436494b1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeDomain_e999f07e-98ed-4f0a-81d5-85732f419c46" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubsequentEventTypeDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SubsequentEventTypeAxis_22d15f60-23b9-4192-b278-d764436494b1" xlink:to="loc_us-gaap_SubsequentEventTypeDomain_e999f07e-98ed-4f0a-81d5-85732f419c46" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventMember_8cdc8ffa-2eaa-4b2f-a6c2-e851d36096fd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SubsequentEventMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SubsequentEventTypeDomain_e999f07e-98ed-4f0a-81d5-85732f419c46" xlink:to="loc_us-gaap_SubsequentEventMember_8cdc8ffa-2eaa-4b2f-a6c2-e851d36096fd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2f3e7376-e11c-4afd-8a02-c7c5f4fd6506" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares_8e12bd85-0968-4e5d-a31b-40510a49c170" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares_8e12bd85-0968-4e5d-a31b-40510a49c170" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_9069d8cd-9e99-4c75-8267-0055e0ecfe87" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_9069d8cd-9e99-4c75-8267-0055e0ecfe87" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_MinimumExercisePriceOfStockOptionPercent_65597541-934b-423b-989c-c46af355474f" xlink:href="calx-20221231.xsd#calx_MinimumExercisePriceOfStockOptionPercent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_MinimumExercisePriceOfStockOptionPercent_65597541-934b-423b-989c-c46af355474f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage_a87c256e-faaa-4e88-aaf5-ad15db13e71a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage_a87c256e-faaa-4e88-aaf5-ad15db13e71a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_bbae5cf6-e931-44ff-83fa-aa621d9a2cee" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_bbae5cf6-e931-44ff-83fa-aa621d9a2cee" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ContractualTermStockOptions_6ae62ea8-dc5b-43fa-8237-b107090e40af" xlink:href="calx-20221231.xsd#calx_ContractualTermStockOptions"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ContractualTermStockOptions_6ae62ea8-dc5b-43fa-8237-b107090e40af" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross_70ec692c-ed71-454c-8e6f-7ce8fe77f92f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross_70ec692c-ed71-454c-8e6f-7ce8fe77f92f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_be1c92ff-4707-4353-8459-fe5526d688b3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_be1c92ff-4707-4353-8459-fe5526d688b3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1_24fb0d17-d23b-4889-a1cd-2f177492c6ef" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1_24fb0d17-d23b-4889-a1cd-2f177492c6ef" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent_c611f6f8-1628-4ffb-b58a-90aa43134703" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent_c611f6f8-1628-4ffb-b58a-90aa43134703" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent_f942c725-4ac4-47ea-9858-8a02f1930687" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent_f942c725-4ac4-47ea-9858-8a02f1930687" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet_41b38fd2-5d00-435b-84e2-f712efb29172" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet_41b38fd2-5d00-435b-84e2-f712efb29172" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent_fdabc268-2f9b-4acf-b369-4c8dea109dc5" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent_fdabc268-2f9b-4acf-b369-4c8dea109dc5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent_82d53a19-7801-4faf-bf26-197d17d10b80" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent_82d53a19-7801-4faf-bf26-197d17d10b80" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition_1d590a28-778e-48e9-9e4f-2e59102e8ec2" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition_1d590a28-778e-48e9-9e4f-2e59102e8ec2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PerformanceTargetsServicesConditionPeriod_499573ca-b3c4-495b-95b3-78ec9a01de66" xlink:href="calx-20221231.xsd#calx_PerformanceTargetsServicesConditionPeriod"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_calx_PerformanceTargetsServicesConditionPeriod_499573ca-b3c4-495b-95b3-78ec9a01de66" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensation_1ee4a36b-2572-4e5a-876b-a6848e096b70" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensation"/>
    <link:presentationArc order="17" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_80d557bc-c1a8-4d62-a123-bcdac25b891d" xlink:to="loc_us-gaap_ShareBasedCompensation_1ee4a36b-2572-4e5a-876b-a6848e096b70" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityStockOptionsActivityDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_183f92d4-96e6-4d12-8fda-c0af4a1a9313" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_e918a767-81c5-4c82-bb18-b97423e345b1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_183f92d4-96e6-4d12-8fda-c0af4a1a9313" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_e918a767-81c5-4c82-bb18-b97423e345b1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_48e4397d-ac77-4798-94ad-01bfa8342027" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_e918a767-81c5-4c82-bb18-b97423e345b1" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_48e4397d-ac77-4798-94ad-01bfa8342027" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross_191e5af7-7194-476c-9e5d-d1e70eafa91a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_e918a767-81c5-4c82-bb18-b97423e345b1" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross_191e5af7-7194-476c-9e5d-d1e70eafa91a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_71ae78d1-4af4-4d61-b65a-962bf24a5fc5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_e918a767-81c5-4c82-bb18-b97423e345b1" xlink:to="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_71ae78d1-4af4-4d61-b65a-962bf24a5fc5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod_7ecd0f15-31c5-4e60-9df5-94773931c924" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_e918a767-81c5-4c82-bb18-b97423e345b1" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod_7ecd0f15-31c5-4e60-9df5-94773931c924" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_3b5618e7-ce4b-4e71-ab3a-c04edde8ef9c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_e918a767-81c5-4c82-bb18-b97423e345b1" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_3b5618e7-ce4b-4e71-ab3a-c04edde8ef9c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_38d5ca0b-3559-458e-9270-d3c0a794850f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_183f92d4-96e6-4d12-8fda-c0af4a1a9313" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_38d5ca0b-3559-458e-9270-d3c0a794850f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_fae5b130-cc39-4871-a5cd-a39e42434fd2" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_38d5ca0b-3559-458e-9270-d3c0a794850f" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_fae5b130-cc39-4871-a5cd-a39e42434fd2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice_bcda9600-94cb-40dc-acbf-08d4dc016f99" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_38d5ca0b-3559-458e-9270-d3c0a794850f" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice_bcda9600-94cb-40dc-acbf-08d4dc016f99" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice_6e17c82e-ccd7-4984-b395-91cea397b1e6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_38d5ca0b-3559-458e-9270-d3c0a794850f" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice_6e17c82e-ccd7-4984-b395-91cea397b1e6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice_bf3cba3c-d7e8-4471-9f2c-1359a237d4b9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_38d5ca0b-3559-458e-9270-d3c0a794850f" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice_bf3cba3c-d7e8-4471-9f2c-1359a237d4b9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_101abf1a-e14c-4473-a5cc-60ff85831dda" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_38d5ca0b-3559-458e-9270-d3c0a794850f" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_101abf1a-e14c-4473-a5cc-60ff85831dda" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract_47d0ab92-f550-4153-8219-d40d768e11b9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_183f92d4-96e6-4d12-8fda-c0af4a1a9313" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract_47d0ab92-f550-4153-8219-d40d768e11b9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2_04c08198-00a2-4a24-b326-a9764899e7ee" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract_47d0ab92-f550-4153-8219-d40d768e11b9" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2_04c08198-00a2-4a24-b326-a9764899e7ee" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue_33fd5185-69b9-4f10-b2ef-63c0a2f7ab46" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract_47d0ab92-f550-4153-8219-d40d768e11b9" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue_33fd5185-69b9-4f10-b2ef-63c0a2f7ab46" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber_8eaf59a1-1ce8-47f9-9d4d-1dc8a01180d9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract_47d0ab92-f550-4153-8219-d40d768e11b9" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber_8eaf59a1-1ce8-47f9-9d4d-1dc8a01180d9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice_6927534d-9744-46c5-8c72-294e62bd6592" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract_47d0ab92-f550-4153-8219-d40d768e11b9" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice_6927534d-9744-46c5-8c72-294e62bd6592" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1_26e6d26c-94f8-4488-b1e5-10e09dfe2902" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract_47d0ab92-f550-4153-8219-d40d768e11b9" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1_26e6d26c-94f8-4488-b1e5-10e09dfe2902" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue_6c8c16dc-b574-4c07-bc6a-d71bca5f77ba" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract_47d0ab92-f550-4153-8219-d40d768e11b9" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue_6c8c16dc-b574-4c07-bc6a-d71bca5f77ba" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber_6b3c84e4-afe9-4ba9-ba6a-810ca9460346" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract_47d0ab92-f550-4153-8219-d40d768e11b9" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber_6b3c84e4-afe9-4ba9-ba6a-810ca9460346" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice_04b9540a-c381-41f7-9739-828568ef839f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract_47d0ab92-f550-4153-8219-d40d768e11b9" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice_04b9540a-c381-41f7-9739-828568ef839f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1_c8159628-c4f4-4b44-96cd-85d63bb7adc6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract_47d0ab92-f550-4153-8219-d40d768e11b9" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1_c8159628-c4f4-4b44-96cd-85d63bb7adc6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1_05e91935-09be-4dac-871b-d4883ac4cad6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract_47d0ab92-f550-4153-8219-d40d768e11b9" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1_05e91935-09be-4dac-871b-d4883ac4cad6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare_2c1f19b3-b1ac-4328-84b4-282fa14febcb" xlink:href="calx-20221231.xsd#calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract_47d0ab92-f550-4153-8219-d40d768e11b9" xlink:to="loc_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare_2c1f19b3-b1ac-4328-84b4-282fa14febcb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue_5ff35097-294c-425c-a743-bd32abc81d56" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_183f92d4-96e6-4d12-8fda-c0af4a1a9313" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue_5ff35097-294c-425c-a743-bd32abc81d56" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised_48b7dbe9-e833-4bfa-aab9-3a7501545450" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_183f92d4-96e6-4d12-8fda-c0af4a1a9313" xlink:to="loc_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised_48b7dbe9-e833-4bfa-aab9-3a7501545450" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityFairValueofAwardsGrantedDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_d8055750-fac3-46e5-b8d4-131a8342f3a0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_bcde45f3-32b6-48f2-8ba8-41f2deeeaa1f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_d8055750-fac3-46e5-b8d4-131a8342f3a0" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_bcde45f3-32b6-48f2-8ba8-41f2deeeaa1f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameAxis_73b7545f-c38f-4bdc-84ec-81f944141fee" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_bcde45f3-32b6-48f2-8ba8-41f2deeeaa1f" xlink:to="loc_us-gaap_PlanNameAxis_73b7545f-c38f-4bdc-84ec-81f944141fee" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameDomain_c00e7f72-05f3-4534-86e7-d3e7009ebbe4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PlanNameAxis_73b7545f-c38f-4bdc-84ec-81f944141fee" xlink:to="loc_us-gaap_PlanNameDomain_c00e7f72-05f3-4534-86e7-d3e7009ebbe4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember_c6f272fe-9129-4ed8-b626-35f30b45a0d5" xlink:href="calx-20221231.xsd#calx_A2017NonqualifiedEmployeeStockPurchasePlanMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PlanNameDomain_c00e7f72-05f3-4534-86e7-d3e7009ebbe4" xlink:to="loc_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember_c6f272fe-9129-4ed8-b626-35f30b45a0d5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_5235c8ef-d4ca-42bc-9b34-9b93a360293b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AwardTypeAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_bcde45f3-32b6-48f2-8ba8-41f2deeeaa1f" xlink:to="loc_us-gaap_AwardTypeAxis_5235c8ef-d4ca-42bc-9b34-9b93a360293b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f7b2f241-6a84-4d51-9659-fc8b35ba7c1b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AwardTypeAxis_5235c8ef-d4ca-42bc-9b34-9b93a360293b" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f7b2f241-6a84-4d51-9659-fc8b35ba7c1b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockMember_8d62db37-d86d-4d77-a6cb-d9f9b10deedd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f7b2f241-6a84-4d51-9659-fc8b35ba7c1b" xlink:to="loc_us-gaap_EmployeeStockMember_8d62db37-d86d-4d77-a6cb-d9f9b10deedd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_acef54e2-08fa-42d7-83c0-7ced5311b4ac" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_bcde45f3-32b6-48f2-8ba8-41f2deeeaa1f" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_acef54e2-08fa-42d7-83c0-7ced5311b4ac" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_9d9ac90b-f0f2-47ae-bdac-d909be9bba91" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_acef54e2-08fa-42d7-83c0-7ced5311b4ac" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_9d9ac90b-f0f2-47ae-bdac-d909be9bba91" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_acfe260f-0b1a-4354-837d-80b0d2e288dc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_acef54e2-08fa-42d7-83c0-7ced5311b4ac" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_acfe260f-0b1a-4354-837d-80b0d2e288dc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityStockBasedCompensationExpenseDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_a23912bf-3d8c-4f7e-91c2-b5613aba7ce6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_06572598-fa0b-464a-9464-162cccdb753b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_a23912bf-3d8c-4f7e-91c2-b5613aba7ce6" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_06572598-fa0b-464a-9464-162cccdb753b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationAxis_74839b29-ef50-4bfd-97b4-0927b40d9469" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeStatementLocationAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_06572598-fa0b-464a-9464-162cccdb753b" xlink:to="loc_us-gaap_IncomeStatementLocationAxis_74839b29-ef50-4bfd-97b4-0927b40d9469" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain_cc530ee0-0922-49a7-adcd-e4218ef16176" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeStatementLocationDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementLocationAxis_74839b29-ef50-4bfd-97b4-0927b40d9469" xlink:to="loc_us-gaap_IncomeStatementLocationDomain_cc530ee0-0922-49a7-adcd-e4218ef16176" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CostOfRevenueProductsMember_41944a30-8354-4b34-8024-33e83b22da94" xlink:href="calx-20221231.xsd#calx_CostOfRevenueProductsMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_cc530ee0-0922-49a7-adcd-e4218ef16176" xlink:to="loc_calx_CostOfRevenueProductsMember_41944a30-8354-4b34-8024-33e83b22da94" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CostOfRevenueServicesMember_91a77800-3e1c-4873-a4b7-e42faa253253" xlink:href="calx-20221231.xsd#calx_CostOfRevenueServicesMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_cc530ee0-0922-49a7-adcd-e4218ef16176" xlink:to="loc_calx_CostOfRevenueServicesMember_91a77800-3e1c-4873-a4b7-e42faa253253" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SellingAndMarketingExpenseMember_81e00abf-e9d3-432a-8b09-f16328fe315e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SellingAndMarketingExpenseMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_cc530ee0-0922-49a7-adcd-e4218ef16176" xlink:to="loc_us-gaap_SellingAndMarketingExpenseMember_81e00abf-e9d3-432a-8b09-f16328fe315e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpenseMember_5bc2cee7-f563-4edf-8f7b-d94d4c7a4c0f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ResearchAndDevelopmentExpenseMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_cc530ee0-0922-49a7-adcd-e4218ef16176" xlink:to="loc_us-gaap_ResearchAndDevelopmentExpenseMember_5bc2cee7-f563-4edf-8f7b-d94d4c7a4c0f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GeneralAndAdministrativeExpenseMember_bf272b44-896a-4105-99e9-55c8801407e0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_GeneralAndAdministrativeExpenseMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_cc530ee0-0922-49a7-adcd-e4218ef16176" xlink:to="loc_us-gaap_GeneralAndAdministrativeExpenseMember_bf272b44-896a-4105-99e9-55c8801407e0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_0334a1e4-ffdb-4dca-acd4-dccd17efaed1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_06572598-fa0b-464a-9464-162cccdb753b" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_0334a1e4-ffdb-4dca-acd4-dccd17efaed1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllocatedShareBasedCompensationExpense_72b13d2c-5124-411b-8a39-b5146b9d43d6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AllocatedShareBasedCompensationExpense"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_0334a1e4-ffdb-4dca-acd4-dccd17efaed1" xlink:to="loc_us-gaap_AllocatedShareBasedCompensationExpense_72b13d2c-5124-411b-8a39-b5146b9d43d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_bfb3f9aa-c418-4fbb-a004-2307c38d5578" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_0334a1e4-ffdb-4dca-acd4-dccd17efaed1" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_bfb3f9aa-c418-4fbb-a004-2307c38d5578" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PercentOfHistoricalVolatility_bc61d22f-6766-405a-b837-49105cfad7af" xlink:href="calx-20221231.xsd#calx_PercentOfHistoricalVolatility"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_0334a1e4-ffdb-4dca-acd4-dccd17efaed1" xlink:to="loc_calx_PercentOfHistoricalVolatility_bc61d22f-6766-405a-b837-49105cfad7af" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_PercentOfImpliedVolatility_766e10f6-a81e-41f5-a04e-0cc3434750ad" xlink:href="calx-20221231.xsd#calx_PercentOfImpliedVolatility"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_0334a1e4-ffdb-4dca-acd4-dccd17efaed1" xlink:to="loc_calx_PercentOfImpliedVolatility_766e10f6-a81e-41f5-a04e-0cc3434750ad" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityESPPDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityESPPDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/StockholdersEquityESPPDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_e07bb940-732b-4a26-af69-1a262a016c51" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_7e693c30-6c25-45ea-bb61-311a79fdb3b4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_e07bb940-732b-4a26-af69-1a262a016c51" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_7e693c30-6c25-45ea-bb61-311a79fdb3b4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_6488ef06-570b-4a1f-99de-c986be1b10ad" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AwardTypeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_7e693c30-6c25-45ea-bb61-311a79fdb3b4" xlink:to="loc_us-gaap_AwardTypeAxis_6488ef06-570b-4a1f-99de-c986be1b10ad" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_19abec3b-5acf-4f78-8458-bd74fb2c6d4f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AwardTypeAxis_6488ef06-570b-4a1f-99de-c986be1b10ad" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_19abec3b-5acf-4f78-8458-bd74fb2c6d4f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockMember_fa547d95-611b-44ba-a0ab-95423243bab1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_19abec3b-5acf-4f78-8458-bd74fb2c6d4f" xlink:to="loc_us-gaap_EmployeeStockMember_fa547d95-611b-44ba-a0ab-95423243bab1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameAxis_4cb57425-9e93-419c-b803-25d6f7c2e7a2" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_7e693c30-6c25-45ea-bb61-311a79fdb3b4" xlink:to="loc_us-gaap_PlanNameAxis_4cb57425-9e93-419c-b803-25d6f7c2e7a2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameDomain_9a630e40-e878-4f50-887a-ec2b86f4962e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PlanNameAxis_4cb57425-9e93-419c-b803-25d6f7c2e7a2" xlink:to="loc_us-gaap_PlanNameDomain_9a630e40-e878-4f50-887a-ec2b86f4962e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember_d38843fc-71da-4b73-aaf7-9834edbeb825" xlink:href="calx-20221231.xsd#calx_A2017NonqualifiedEmployeeStockPurchasePlanMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PlanNameDomain_9a630e40-e878-4f50-887a-ec2b86f4962e" xlink:to="loc_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember_d38843fc-71da-4b73-aaf7-9834edbeb825" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EmployeeStockPurchasePlanMember_5ccd714f-0533-4b4f-807b-59d58f56f7d1" xlink:href="calx-20221231.xsd#calx_EmployeeStockPurchasePlanMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PlanNameDomain_9a630e40-e878-4f50-887a-ec2b86f4962e" xlink:to="loc_calx_EmployeeStockPurchasePlanMember_5ccd714f-0533-4b4f-807b-59d58f56f7d1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_7e693c30-6c25-45ea-bb61-311a79fdb3b4" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate_8a5909c5-7093-4f0b-a5ee-ddc72201f923" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate_8a5909c5-7093-4f0b-a5ee-ddc72201f923" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee_83625f11-a5fc-45f4-8cf0-4335e255fb4d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee_83625f11-a5fc-45f4-8cf0-4335e255fb4d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods_202e9af0-a5c3-40a2-bf37-85b94ba6e2f2" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods_202e9af0-a5c3-40a2-bf37-85b94ba6e2f2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod_ac4a5f8b-a4c5-4068-bf79-5eca8e19a25e" xlink:href="calx-20221231.xsd#calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod_ac4a5f8b-a4c5-4068-bf79-5eca8e19a25e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent_ad45c667-c49f-4dfa-b26f-88c17ddab3ea" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent_ad45c667-c49f-4dfa-b26f-88c17ddab3ea" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized_bf0469d1-f2dc-4ed9-9d5c-ca9cfeda1b78" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized_bf0469d1-f2dc-4ed9-9d5c-ca9cfeda1b78" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized_b44f7f32-a176-45d3-9352-eef8db86e671" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized_b44f7f32-a176-45d3-9352-eef8db86e671" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_831c0306-03f7-4cea-966a-661d51837d2d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_831c0306-03f7-4cea-966a-661d51837d2d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan_0c0c4656-be38-4725-866c-cc4dcd9f0854" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan_0c0c4656-be38-4725-866c-cc4dcd9f0854" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions_8c383186-4c51-4c2c-8b65-458586dc102d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions_8c383186-4c51-4c2c-8b65-458586dc102d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_0daa64e1-0497-4d91-9cf1-64c69efd1dce" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_0daa64e1-0497-4d91-9cf1-64c69efd1dce" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent_db72f3d7-fddc-43d5-b6b1-f9cf877a6d07" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent_db72f3d7-fddc-43d5-b6b1-f9cf877a6d07" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture_d62c4154-1d90-4194-9472-3ebedb8f0690" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture_d62c4154-1d90-4194-9472-3ebedb8f0690" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod_aa307965-7b52-42e9-9378-5dfe37125e70" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod_aa307965-7b52-42e9-9378-5dfe37125e70" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares_0cf56485-9126-48be-8c34-14f055c5e5dc" xlink:href="calx-20221231.xsd#calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares_0cf56485-9126-48be-8c34-14f055c5e5dc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod_61688637-dc96-47b9-bdad-9a32d38ddbf8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod_61688637-dc96-47b9-bdad-9a32d38ddbf8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward_9556352d-0835-475d-993f-525cb6986811" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward"/>
    <link:presentationArc order="17" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward_9556352d-0835-475d-993f-525cb6986811" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_31c821b7-76b6-4094-a67c-e9f90f255234" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions"/>
    <link:presentationArc order="18" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_4a4d25f3-5938-4e2b-a8d7-8a6b74118acf" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_31c821b7-76b6-4094-a67c-e9f90f255234" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityAssumptionsDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityAssumptionsDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/StockholdersEquityAssumptionsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_d0851cb4-cbbc-43eb-adbc-dd80bb257a72" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_4062d51f-284b-4630-84f0-d0b3e5dc5cff" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_d0851cb4-cbbc-43eb-adbc-dd80bb257a72" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_4062d51f-284b-4630-84f0-d0b3e5dc5cff" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_08862624-9758-4c55-b7a1-b278d41f3a2a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AwardTypeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_4062d51f-284b-4630-84f0-d0b3e5dc5cff" xlink:to="loc_us-gaap_AwardTypeAxis_08862624-9758-4c55-b7a1-b278d41f3a2a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_8014f82b-429f-4bcf-a6e3-26c39e38ed02" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AwardTypeAxis_08862624-9758-4c55-b7a1-b278d41f3a2a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_8014f82b-429f-4bcf-a6e3-26c39e38ed02" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_4fac624d-8e02-47ed-a58c-7834eb926783" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_8014f82b-429f-4bcf-a6e3-26c39e38ed02" xlink:to="loc_us-gaap_EmployeeStockOptionMember_4fac624d-8e02-47ed-a58c-7834eb926783" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockMember_5dbf485e-9a1d-4b62-8b37-7bd013ed8dcf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_8014f82b-429f-4bcf-a6e3-26c39e38ed02" xlink:to="loc_us-gaap_EmployeeStockMember_5dbf485e-9a1d-4b62-8b37-7bd013ed8dcf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_3beca203-e52e-473e-82bf-b766ded95b63" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_4062d51f-284b-4630-84f0-d0b3e5dc5cff" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_3beca203-e52e-473e-82bf-b766ded95b63" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract_52da0c52-1c88-4012-ad5b-c309997674da" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_3beca203-e52e-473e-82bf-b766ded95b63" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract_52da0c52-1c88-4012-ad5b-c309997674da" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_dc3c7722-8df0-4627-a30a-3180357d1eb1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract_52da0c52-1c88-4012-ad5b-c309997674da" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_dc3c7722-8df0-4627-a30a-3180357d1eb1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_9d5a8286-d005-452c-8a43-accaff3d52ce" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract_52da0c52-1c88-4012-ad5b-c309997674da" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_9d5a8286-d005-452c-8a43-accaff3d52ce" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_638fc76f-f273-4f01-89d0-13d0f279aff1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract_52da0c52-1c88-4012-ad5b-c309997674da" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_638fc76f-f273-4f01-89d0-13d0f279aff1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_d6fe8a02-e514-4fdc-8e19-0306667774d9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2c6ccdc9-52ba-431d-9947-6a88edf95afb" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_d6fe8a02-e514-4fdc-8e19-0306667774d9" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2c6ccdc9-52ba-431d-9947-6a88edf95afb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_9aca22a0-8243-4d85-942b-406770496483" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AwardTypeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2c6ccdc9-52ba-431d-9947-6a88edf95afb" xlink:to="loc_us-gaap_AwardTypeAxis_9aca22a0-8243-4d85-942b-406770496483" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_3e9b0ec6-8bd9-4aa9-8498-d5ac99edba9f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AwardTypeAxis_9aca22a0-8243-4d85-942b-406770496483" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_3e9b0ec6-8bd9-4aa9-8498-d5ac99edba9f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_5a2ab5a7-e0a6-4e11-a7a5-d700dc19acb7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_3e9b0ec6-8bd9-4aa9-8498-d5ac99edba9f" xlink:to="loc_us-gaap_EmployeeStockOptionMember_5a2ab5a7-e0a6-4e11-a7a5-d700dc19acb7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockMember_ab26222b-dbfa-43f3-8aa9-504ee72e0da3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_3e9b0ec6-8bd9-4aa9-8498-d5ac99edba9f" xlink:to="loc_us-gaap_EmployeeStockMember_ab26222b-dbfa-43f3-8aa9-504ee72e0da3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_2c6ccdc9-52ba-431d-9947-6a88edf95afb" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized_ccc6af91-beb2-494f-8cff-bf79743f9375" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized_ccc6af91-beb2-494f-8cff-bf79743f9375" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_927d5003-dc8f-4395-b385-7efe502ea4ef" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_927d5003-dc8f-4395-b385-7efe502ea4ef" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth_3e78f6d6-5d19-46fd-97b9-ddc5fc08f89e" xlink:href="calx-20221231.xsd#calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:to="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth_3e78f6d6-5d19-46fd-97b9-ddc5fc08f89e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo_25095cbf-f11a-461d-80c5-fb7379f5dbd5" xlink:href="calx-20221231.xsd#calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:to="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo_25095cbf-f11a-461d-80c5-fb7379f5dbd5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree_ce4d36df-b9a7-4064-ad55-9757079a1674" xlink:href="calx-20221231.xsd#calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:to="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree_ce4d36df-b9a7-4064-ad55-9757079a1674" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour_d229a3a9-a235-43ee-a4ef-0a918175922e" xlink:href="calx-20221231.xsd#calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_950e2a0b-b48f-4df1-af0c-1878e1d3fb6a" xlink:to="loc_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour_d229a3a9-a235-43ee-a4ef-0a918175922e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#StockholdersEquitySharesReservedForFutureIssuanceDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_e05b0531-68bb-4691-9005-a2bf2a084b67" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_65cfca83-1e2b-4ab4-89d1-e3729b1779a7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_e05b0531-68bb-4691-9005-a2bf2a084b67" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_65cfca83-1e2b-4ab4-89d1-e3729b1779a7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameAxis_28390eac-b61d-416a-be52-7eeb34a8ac91" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_65cfca83-1e2b-4ab4-89d1-e3729b1779a7" xlink:to="loc_us-gaap_PlanNameAxis_28390eac-b61d-416a-be52-7eeb34a8ac91" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PlanNameDomain_ab9835e7-8be8-441e-8f0d-3cc2ed17cb2d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PlanNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PlanNameAxis_28390eac-b61d-416a-be52-7eeb34a8ac91" xlink:to="loc_us-gaap_PlanNameDomain_ab9835e7-8be8-441e-8f0d-3cc2ed17cb2d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2019PlanMember_cb4a30a1-9778-434e-942f-2f0797a806d6" xlink:href="calx-20221231.xsd#calx_A2019PlanMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PlanNameDomain_ab9835e7-8be8-441e-8f0d-3cc2ed17cb2d" xlink:to="loc_calx_A2019PlanMember_cb4a30a1-9778-434e-942f-2f0797a806d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember_3aca9807-f62e-4df9-8959-91afb2afdca4" xlink:href="calx-20221231.xsd#calx_A2017NonqualifiedEmployeeStockPurchasePlanMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PlanNameDomain_ab9835e7-8be8-441e-8f0d-3cc2ed17cb2d" xlink:to="loc_calx_A2017NonqualifiedEmployeeStockPurchasePlanMember_3aca9807-f62e-4df9-8959-91afb2afdca4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_5f1f63f8-7101-492e-be75-e8c4e57f2e1e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AwardTypeAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_65cfca83-1e2b-4ab4-89d1-e3729b1779a7" xlink:to="loc_us-gaap_AwardTypeAxis_5f1f63f8-7101-492e-be75-e8c4e57f2e1e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_586cce2d-0d29-4395-abcf-3be523142c82" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AwardTypeAxis_5f1f63f8-7101-492e-be75-e8c4e57f2e1e" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_586cce2d-0d29-4395-abcf-3be523142c82" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockMember_25c2eec6-ae7b-4593-ae1c-c925be84b7f6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EmployeeStockMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_586cce2d-0d29-4395-abcf-3be523142c82" xlink:to="loc_us-gaap_EmployeeStockMember_25c2eec6-ae7b-4593-ae1c-c925be84b7f6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_88c22150-fa92-44e4-8b96-4d4e635d709d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_65cfca83-1e2b-4ab4-89d1-e3729b1779a7" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_88c22150-fa92-44e4-8b96-4d4e635d709d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_fca89cfb-861b-45c9-89a2-ffaf81d039db" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_88c22150-fa92-44e4-8b96-4d4e635d709d" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_fca89cfb-861b-45c9-89a2-ffaf81d039db" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_1ee270f2-ccd2-4025-ba93-95f7f993767b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_88c22150-fa92-44e4-8b96-4d4e635d709d" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_1ee270f2-ccd2-4025-ba93-95f7f993767b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance_d9d1ef82-3038-4ef2-83fd-c5ec351d8c42" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CommonStockCapitalSharesReservedForFutureIssuance"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_88c22150-fa92-44e4-8b96-4d4e635d709d" xlink:to="loc_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance_d9d1ef82-3038-4ef2-83fd-c5ec351d8c42" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/EmployeeBenefitPlanDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#EmployeeBenefitPlanDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/EmployeeBenefitPlanDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_79209b01-57fc-40d6-aba2-39a97d4eb0cd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CompensationAndRetirementDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DefinedContributionPlanCostRecognized_773c0bec-b1f6-4475-97b8-0ebc918235fc" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DefinedContributionPlanCostRecognized"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_79209b01-57fc-40d6-aba2-39a97d4eb0cd" xlink:to="loc_us-gaap_DefinedContributionPlanCostRecognized_773c0bec-b1f6-4475-97b8-0ebc918235fc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#AccumulatedOtherComprehensiveLossDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_3e35baee-3adf-4557-8968-78689ec9adff" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_9ecb89bf-1c49-4abd-a644-3c2a8d579d3e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_3e35baee-3adf-4557-8968-78689ec9adff" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_9ecb89bf-1c49-4abd-a644-3c2a8d579d3e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementEquityComponentsAxis_3c259938-7ccd-459b-adc0-934aba2c1d08" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StatementEquityComponentsAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_9ecb89bf-1c49-4abd-a644-3c2a8d579d3e" xlink:to="loc_us-gaap_StatementEquityComponentsAxis_3c259938-7ccd-459b-adc0-934aba2c1d08" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_acb2e356-73c1-4863-b9b3-e97889e7f487" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EquityComponentDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_3c259938-7ccd-459b-adc0-934aba2c1d08" xlink:to="loc_us-gaap_EquityComponentDomain_acb2e356-73c1-4863-b9b3-e97889e7f487" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_f2fc7996-2e42-4d61-a643-fe51be38e53f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityComponentDomain_acb2e356-73c1-4863-b9b3-e97889e7f487" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_f2fc7996-2e42-4d61-a643-fe51be38e53f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember_023d64c2-fe08-4c62-b7aa-943b1d5faaa3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_f2fc7996-2e42-4d61-a643-fe51be38e53f" xlink:to="loc_us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember_023d64c2-fe08-4c62-b7aa-943b1d5faaa3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedTranslationAdjustmentMember_3295b896-0ab4-4793-bec1-8afbcdf35f93" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedTranslationAdjustmentMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_f2fc7996-2e42-4d61-a643-fe51be38e53f" xlink:to="loc_us-gaap_AccumulatedTranslationAdjustmentMember_3295b896-0ab4-4793-bec1-8afbcdf35f93" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_3e3dd8d0-6d10-473a-b122-b42887d6b42d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_9ecb89bf-1c49-4abd-a644-3c2a8d579d3e" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_3e3dd8d0-6d10-473a-b122-b42887d6b42d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_1b8734ae-cd0d-4aed-918b-3434010729c3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInStockholdersEquityRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_3e3dd8d0-6d10-473a-b122-b42887d6b42d" xlink:to="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_1b8734ae-cd0d-4aed-918b-3434010729c3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_14215e48-2cd0-4bab-b3fa-405f9dcb729c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockholdersEquity"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_1b8734ae-cd0d-4aed-918b-3434010729c3" xlink:to="loc_us-gaap_StockholdersEquity_14215e48-2cd0-4bab-b3fa-405f9dcb729c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_611c1092-6c09-4bf9-9f60-7ce2df86f9b0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_1b8734ae-cd0d-4aed-918b-3434010729c3" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_611c1092-6c09-4bf9-9f60-7ce2df86f9b0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_3ccd1d8c-85f7-44d8-a31e-27c85df767e9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StockholdersEquity"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_1b8734ae-cd0d-4aed-918b-3434010729c3" xlink:to="loc_us-gaap_StockholdersEquity_3ccd1d8c-85f7-44d8-a31e-27c85df767e9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_89c97716-11ff-4930-a86e-2fa9e22935d3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_d1aee260-db4b-4248-b42e-5b19fa921e1d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_89c97716-11ff-4930-a86e-2fa9e22935d3" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_d1aee260-db4b-4248-b42e-5b19fa921e1d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_a7d6bde8-1c23-4dfd-b995-a9d2dca624a1" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_89c97716-11ff-4930-a86e-2fa9e22935d3" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_a7d6bde8-1c23-4dfd-b995-a9d2dca624a1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_b2bf349c-2bd6-4242-b24a-dbbea1946e4e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_89c97716-11ff-4930-a86e-2fa9e22935d3" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_b2bf349c-2bd6-4242-b24a-dbbea1946e4e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#IncomeTaxesComponentsofIncomeTaxProvisionDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_c79182e4-6533-4a89-8f11-6282dd8104f3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_ae35bd15-ec79-40b8-ad16-d4e9b56d5914" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_c79182e4-6533-4a89-8f11-6282dd8104f3" xlink:to="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_ae35bd15-ec79-40b8-ad16-d4e9b56d5914" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentFederalTaxExpenseBenefit_6dd66183-95c7-435e-a99a-4cb59f4861fa" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CurrentFederalTaxExpenseBenefit"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_ae35bd15-ec79-40b8-ad16-d4e9b56d5914" xlink:to="loc_us-gaap_CurrentFederalTaxExpenseBenefit_6dd66183-95c7-435e-a99a-4cb59f4861fa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_9a6f52de-084b-45a4-8ee4-71ced52b6697" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_ae35bd15-ec79-40b8-ad16-d4e9b56d5914" xlink:to="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_9a6f52de-084b-45a4-8ee4-71ced52b6697" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentForeignTaxExpenseBenefit_a448239a-f2e9-44b8-b0a4-f73e8b95f70d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CurrentForeignTaxExpenseBenefit"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_ae35bd15-ec79-40b8-ad16-d4e9b56d5914" xlink:to="loc_us-gaap_CurrentForeignTaxExpenseBenefit_a448239a-f2e9-44b8-b0a4-f73e8b95f70d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_94c40c80-7276-4205-a988-f8668435c3fd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CurrentIncomeTaxExpenseBenefit"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_ae35bd15-ec79-40b8-ad16-d4e9b56d5914" xlink:to="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_94c40c80-7276-4205-a988-f8668435c3fd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_cca34884-0717-416b-91ab-ce7871e15ef0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_c79182e4-6533-4a89-8f11-6282dd8104f3" xlink:to="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_cca34884-0717-416b-91ab-ce7871e15ef0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_72248c1f-b3b0-4871-8c77-3f038518cc29" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_cca34884-0717-416b-91ab-ce7871e15ef0" xlink:to="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_72248c1f-b3b0-4871-8c77-3f038518cc29" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_ec184707-d38c-4c21-aa6e-408c323f6ec6" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_cca34884-0717-416b-91ab-ce7871e15ef0" xlink:to="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_ec184707-d38c-4c21-aa6e-408c323f6ec6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_79388101-f8ff-4337-89ef-0425a0adbf0b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_cca34884-0717-416b-91ab-ce7871e15ef0" xlink:to="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_79388101-f8ff-4337-89ef-0425a0adbf0b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_3ae55dee-9e2f-4eb7-8c57-bdc49ea30bb5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_cca34884-0717-416b-91ab-ce7871e15ef0" xlink:to="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_3ae55dee-9e2f-4eb7-8c57-bdc49ea30bb5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_915ff670-04af-49f1-b822-4ca123d5f7b5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxExpenseBenefit"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_c79182e4-6533-4a89-8f11-6282dd8104f3" xlink:to="loc_us-gaap_IncomeTaxExpenseBenefit_915ff670-04af-49f1-b822-4ca123d5f7b5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#IncomeTaxesIncomeTaxRateReconciliationDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_9671bb83-e43e-44e7-9560-ecc2cd6739c7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_4ebd80af-1886-4fe0-af15-4b9ff4b57ed4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_9671bb83-e43e-44e7-9560-ecc2cd6739c7" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_4ebd80af-1886-4fe0-af15-4b9ff4b57ed4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_949c6d5d-3bb1-4b90-8d2e-b1429126e082" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_9671bb83-e43e-44e7-9560-ecc2cd6739c7" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_949c6d5d-3bb1-4b90-8d2e-b1429126e082" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_d8f64f7a-71f3-40e3-b3c7-9da985d17738" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_9671bb83-e43e-44e7-9560-ecc2cd6739c7" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_d8f64f7a-71f3-40e3-b3c7-9da985d17738" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch_d81bcd77-012f-4e26-bd1e-f3b310c8af08" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_9671bb83-e43e-44e7-9560-ecc2cd6739c7" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch_d81bcd77-012f-4e26-bd1e-f3b310c8af08" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment_22ba3ee3-38d7-4d29-91b7-d476c794bf11" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_9671bb83-e43e-44e7-9560-ecc2cd6739c7" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment_22ba3ee3-38d7-4d29-91b7-d476c794bf11" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent_688544f9-6606-4212-8327-a948bf7bfc7f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_9671bb83-e43e-44e7-9560-ecc2cd6739c7" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent_688544f9-6606-4212-8327-a948bf7bfc7f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost_57bc5537-2f19-49e4-859e-a8e260057c1b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_9671bb83-e43e-44e7-9560-ecc2cd6739c7" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost_57bc5537-2f19-49e4-859e-a8e260057c1b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther_3a492454-36fa-40fc-8cb2-1ddb285e52d4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_9671bb83-e43e-44e7-9560-ecc2cd6739c7" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther_3a492454-36fa-40fc-8cb2-1ddb285e52d4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes_f440e443-2803-44f2-946b-9d24d2d0d701" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_9671bb83-e43e-44e7-9560-ecc2cd6739c7" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes_f440e443-2803-44f2-946b-9d24d2d0d701" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance_0cf003a3-4952-4e03-b3b3-4051f8d891c5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_9671bb83-e43e-44e7-9560-ecc2cd6739c7" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance_0cf003a3-4952-4e03-b3b3-4051f8d891c5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss_2cbea3f2-80c1-450b-b277-702f752ee211" xlink:href="calx-20221231.xsd#calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_9671bb83-e43e-44e7-9560-ecc2cd6739c7" xlink:to="loc_calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss_2cbea3f2-80c1-450b-b277-702f752ee211" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent_012d264f-e672-40fd-ab7b-15fbf96908b3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_9671bb83-e43e-44e7-9560-ecc2cd6739c7" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent_012d264f-e672-40fd-ab7b-15fbf96908b3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_8023dd34-7d94-4bc6-be6d-7938c02bce93" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_9671bb83-e43e-44e7-9560-ecc2cd6739c7" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_8023dd34-7d94-4bc6-be6d-7938c02bce93" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_b52afe11-abc3-4a41-ad4e-0d5c587abbf0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsGrossAbstract_c0a3419a-22a2-4796-a5bd-08479ff1ea0b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsGrossAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_b52afe11-abc3-4a41-ad4e-0d5c587abbf0" xlink:to="loc_us-gaap_DeferredTaxAssetsGrossAbstract_c0a3419a-22a2-4796-a5bd-08479ff1ea0b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards_aa4ecb49-054d-4e94-80c8-658201e18873" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwards"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsGrossAbstract_c0a3419a-22a2-4796-a5bd-08479ff1ea0b" xlink:to="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards_aa4ecb49-054d-4e94-80c8-658201e18873" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardAmount_796e541e-c013-4d5f-96b4-d7aa93bc77ca" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TaxCreditCarryforwardAmount"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsGrossAbstract_c0a3419a-22a2-4796-a5bd-08479ff1ea0b" xlink:to="loc_us-gaap_TaxCreditCarryforwardAmount_796e541e-c013-4d5f-96b4-d7aa93bc77ca" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities_380cdfa5-acd1-4c9f-a7ac-b0a2440e2381" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsGrossAbstract_c0a3419a-22a2-4796-a5bd-08479ff1ea0b" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities_380cdfa5-acd1-4c9f-a7ac-b0a2440e2381" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsDeferredIncome_eed53277-f50a-4734-8ec9-a6911c36204b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsDeferredIncome"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsGrossAbstract_c0a3419a-22a2-4796-a5bd-08479ff1ea0b" xlink:to="loc_us-gaap_DeferredTaxAssetsDeferredIncome_eed53277-f50a-4734-8ec9-a6911c36204b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_79c4f70b-7fe4-4358-b699-317cd67ffb92" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsGrossAbstract_c0a3419a-22a2-4796-a5bd-08479ff1ea0b" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_79c4f70b-7fe4-4358-b699-317cd67ffb92" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts_0cb329d8-7a64-42d1-8939-57672eba3be0" xlink:href="calx-20221231.xsd#calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsGrossAbstract_c0a3419a-22a2-4796-a5bd-08479ff1ea0b" xlink:to="loc_calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts_0cb329d8-7a64-42d1-8939-57672eba3be0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsGross_53214f68-5320-404b-9ad4-347a3486caac" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsGross"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsGrossAbstract_c0a3419a-22a2-4796-a5bd-08479ff1ea0b" xlink:to="loc_us-gaap_DeferredTaxAssetsGross_53214f68-5320-404b-9ad4-347a3486caac" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance_08670a53-52f8-4466-801f-87bd3914d405" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsValuationAllowance"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsGrossAbstract_c0a3419a-22a2-4796-a5bd-08479ff1ea0b" xlink:to="loc_us-gaap_DeferredTaxAssetsValuationAllowance_08670a53-52f8-4466-801f-87bd3914d405" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsNet_6d545bc1-9c1a-43f8-8c7c-14dfd6692824" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsNet"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsGrossAbstract_c0a3419a-22a2-4796-a5bd-08479ff1ea0b" xlink:to="loc_us-gaap_DeferredTaxAssetsNet_6d545bc1-9c1a-43f8-8c7c-14dfd6692824" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesNetAbstract_127946a7-6997-4f6b-84dd-c001bf6ca516" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxLiabilitiesNetAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_b52afe11-abc3-4a41-ad4e-0d5c587abbf0" xlink:to="loc_us-gaap_DeferredTaxLiabilitiesNetAbstract_127946a7-6997-4f6b-84dd-c001bf6ca516" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment_8ee728f5-895c-4b57-b5b9-b6df8e98e902" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxLiabilitiesNetAbstract_127946a7-6997-4f6b-84dd-c001bf6ca516" xlink:to="loc_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment_8ee728f5-895c-4b57-b5b9-b6df8e98e902" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets_76988e6e-f758-44e9-9e77-74bd7f08a87a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxLiabilitiesNetAbstract_127946a7-6997-4f6b-84dd-c001bf6ca516" xlink:to="loc_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets_76988e6e-f758-44e9-9e77-74bd7f08a87a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilities_2f652dcd-43b9-4b0b-ba38-28ddbc814129" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredIncomeTaxLiabilities"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxLiabilitiesNetAbstract_127946a7-6997-4f6b-84dd-c001bf6ca516" xlink:to="loc_us-gaap_DeferredIncomeTaxLiabilities_2f652dcd-43b9-4b0b-ba38-28ddbc814129" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTotalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet_70dcfc9e-9284-44bb-99c4-3dd77a7411d0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsLiabilitiesNet"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_b52afe11-abc3-4a41-ad4e-0d5c587abbf0" xlink:to="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet_70dcfc9e-9284-44bb-99c4-3dd77a7411d0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/IncomeTaxesUnrecognizedTaxBenefitsActivityDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#IncomeTaxesUnrecognizedTaxBenefitsActivityDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/IncomeTaxesUnrecognizedTaxBenefitsActivityDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_23d8ef60-ea38-4452-a5f4-92f2a7f04134" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_5e3ab272-d501-4104-b4a7-321b7bad332f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_23d8ef60-ea38-4452-a5f4-92f2a7f04134" xlink:to="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_5e3ab272-d501-4104-b4a7-321b7bad332f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefits_4bf43d2e-08c7-4347-96ff-bd14cba44bee" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefits"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_5e3ab272-d501-4104-b4a7-321b7bad332f" xlink:to="loc_us-gaap_UnrecognizedTaxBenefits_4bf43d2e-08c7-4347-96ff-bd14cba44bee" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions_b06de049-3c3f-416c-9ebd-255062afad3d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_5e3ab272-d501-4104-b4a7-321b7bad332f" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions_b06de049-3c3f-416c-9ebd-255062afad3d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions_ec0a5f3e-f909-4689-83ed-41a712b0f251" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_5e3ab272-d501-4104-b4a7-321b7bad332f" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions_ec0a5f3e-f909-4689-83ed-41a712b0f251" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions_332376cd-c8c2-4843-a683-d5f3ee57556c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_5e3ab272-d501-4104-b4a7-321b7bad332f" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions_332376cd-c8c2-4843-a683-d5f3ee57556c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefits_9df8d1e1-306d-43fd-9de4-d2176907a874" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefits"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_5e3ab272-d501-4104-b4a7-321b7bad332f" xlink:to="loc_us-gaap_UnrecognizedTaxBenefits_9df8d1e1-306d-43fd-9de4-d2176907a874" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/IncomeTaxesTextualDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#IncomeTaxesTextualDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/IncomeTaxesTextualDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_6440c1fc-775e-4c78-88e5-fe6292a2972c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_IncomeTaxesTable_56d08dab-70f2-4965-a5c9-f387c597f2e4" xlink:href="calx-20221231.xsd#calx_IncomeTaxesTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_6440c1fc-775e-4c78-88e5-fe6292a2972c" xlink:to="loc_calx_IncomeTaxesTable_56d08dab-70f2-4965-a5c9-f387c597f2e4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityAxis_63aca7c2-a07a-4e4c-9e9e-e9de2222770b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxAuthorityAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_IncomeTaxesTable_56d08dab-70f2-4965-a5c9-f387c597f2e4" xlink:to="loc_us-gaap_IncomeTaxAuthorityAxis_63aca7c2-a07a-4e4c-9e9e-e9de2222770b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityDomain_a6c995af-a2e5-449e-bc24-1be471cc2745" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncomeTaxAuthorityDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxAuthorityAxis_63aca7c2-a07a-4e4c-9e9e-e9de2222770b" xlink:to="loc_us-gaap_IncomeTaxAuthorityDomain_a6c995af-a2e5-449e-bc24-1be471cc2745" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DomesticCountryMember_c08b8459-74db-4fba-a48a-aad8585bdb6f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DomesticCountryMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain_a6c995af-a2e5-449e-bc24-1be471cc2745" xlink:to="loc_us-gaap_DomesticCountryMember_c08b8459-74db-4fba-a48a-aad8585bdb6f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StateAndLocalJurisdictionMember_82cc1767-6131-4ee2-ba65-50d9f56dfd04" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_StateAndLocalJurisdictionMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain_a6c995af-a2e5-449e-bc24-1be471cc2745" xlink:to="loc_us-gaap_StateAndLocalJurisdictionMember_82cc1767-6131-4ee2-ba65-50d9f56dfd04" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CaliforniaStateMember_c1fe1cb5-4ac0-4357-a289-18373795b60e" xlink:href="calx-20221231.xsd#calx_CaliforniaStateMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain_a6c995af-a2e5-449e-bc24-1be471cc2745" xlink:to="loc_calx_CaliforniaStateMember_c1fe1cb5-4ac0-4357-a289-18373795b60e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_OtherStateMember_d5a9c1bf-c9ca-4b30-8519-3741f877c203" xlink:href="calx-20221231.xsd#calx_OtherStateMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain_a6c995af-a2e5-449e-bc24-1be471cc2745" xlink:to="loc_calx_OtherStateMember_d5a9c1bf-c9ca-4b30-8519-3741f877c203" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:href="calx-20221231.xsd#calx_IncomeTaxesLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_IncomeTaxesTable_56d08dab-70f2-4965-a5c9-f387c597f2e4" xlink:to="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount_63b32cee-31b8-48da-9cc5-84a5729be205" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:to="loc_us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount_63b32cee-31b8-48da-9cc5-84a5729be205" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance_eb776b21-0209-4c81-b21d-579db9b5b7a4" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_DeferredTaxAssetsValuationAllowance"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:to="loc_us-gaap_DeferredTaxAssetsValuationAllowance_eb776b21-0209-4c81-b21d-579db9b5b7a4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLossCarryforwards_c460a0d7-f3d1-4825-9c6f-a72156e51e40" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_OperatingLossCarryforwards"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:to="loc_us-gaap_OperatingLossCarryforwards_c460a0d7-f3d1-4825-9c6f-a72156e51e40" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardAmount_e3f74dcf-a51c-4d2a-9ad0-a84e16fd35ec" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_TaxCreditCarryforwardAmount"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:to="loc_us-gaap_TaxCreditCarryforwardAmount_e3f74dcf-a51c-4d2a-9ad0-a84e16fd35ec" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefits_9edd8273-45ba-4c41-bf5e-8982197d67f8" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefits"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:to="loc_us-gaap_UnrecognizedTaxBenefits_9edd8273-45ba-4c41-bf5e-8982197d67f8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate_bd5ee275-0d70-435a-a888-8e5d3cb6b81f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate_bd5ee275-0d70-435a-a888-8e5d3cb6b81f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_e3c598ae-87dd-448e-8968-01e52dad6eab" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_calx_IncomeTaxesLineItems_a35515bd-e330-4d9a-ad05-126f526030df" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_e3c598ae-87dd-448e-8968-01e52dad6eab" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareAbstract_f7885954-e378-4784-a084-8931e4598b3e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasicAbstract_75c696e3-db41-4a3b-ab8f-6a5d5c65f9bf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareBasicAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareAbstract_f7885954-e378-4784-a084-8931e4598b3e" xlink:to="loc_us-gaap_EarningsPerShareBasicAbstract_75c696e3-db41-4a3b-ab8f-6a5d5c65f9bf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLossAbstract_daae9dad-439e-4a2d-b456-654042ee1b0d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetIncomeLossAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareBasicAbstract_75c696e3-db41-4a3b-ab8f-6a5d5c65f9bf" xlink:to="loc_us-gaap_NetIncomeLossAbstract_daae9dad-439e-4a2d-b456-654042ee1b0d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_7cb15270-6ee0-48f5-94e6-92b9141e9cf0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_NetIncomeLoss"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetIncomeLossAbstract_daae9dad-439e-4a2d-b456-654042ee1b0d" xlink:to="loc_us-gaap_NetIncomeLoss_7cb15270-6ee0-48f5-94e6-92b9141e9cf0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract_2b113d18-5f7e-47ef-9f8a-357a6141ce62" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareBasicAbstract_75c696e3-db41-4a3b-ab8f-6a5d5c65f9bf" xlink:to="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract_2b113d18-5f7e-47ef-9f8a-357a6141ce62" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_79c95e5b-0773-443d-b52a-a86512a16fec" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract_2b113d18-5f7e-47ef-9f8a-357a6141ce62" xlink:to="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_79c95e5b-0773-443d-b52a-a86512a16fec" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements_0893ddff-c5da-41f3-ae81-4624d53eee5c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract_2b113d18-5f7e-47ef-9f8a-357a6141ce62" xlink:to="loc_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements_0893ddff-c5da-41f3-ae81-4624d53eee5c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_9e9f3fac-cdf4-42a9-88eb-ff0c2492172b" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract_2b113d18-5f7e-47ef-9f8a-357a6141ce62" xlink:to="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_9e9f3fac-cdf4-42a9-88eb-ff0c2492172b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasic_7fd41f9d-703b-4ede-8c2b-e5dc0aeb78cb" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareBasic"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareBasicAbstract_75c696e3-db41-4a3b-ab8f-6a5d5c65f9bf" xlink:to="loc_us-gaap_EarningsPerShareBasic_7fd41f9d-703b-4ede-8c2b-e5dc0aeb78cb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDiluted_ce0e7d49-e812-4c4a-989e-e868e929b411" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_EarningsPerShareDiluted"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareBasicAbstract_75c696e3-db41-4a3b-ab8f-6a5d5c65f9bf" xlink:to="loc_us-gaap_EarningsPerShareDiluted_ce0e7d49-e812-4c4a-989e-e868e929b411" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_d1d0dc21-700e-4578-94a0-be553c4fa729" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareBasicAbstract_75c696e3-db41-4a3b-ab8f-6a5d5c65f9bf" xlink:to="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_d1d0dc21-700e-4578-94a0-be553c4fa729" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerAbstract_69fe5587-2339-4490-bab1-02154f328564" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_1bd658e2-b251-441b-b577-36028f68f4b7" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_69fe5587-2339-4490-bab1-02154f328564" xlink:to="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_1bd658e2-b251-441b-b577-36028f68f4b7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_dfb71a81-afdf-46c0-8071-c492fd4a9421" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_StatementGeographicalAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_1bd658e2-b251-441b-b577-36028f68f4b7" xlink:to="loc_srt_StatementGeographicalAxis_dfb71a81-afdf-46c0-8071-c492fd4a9421" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_b9e9d92e-2b03-41d0-a3c0-36a4e4e7b947" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_StatementGeographicalAxis_dfb71a81-afdf-46c0-8071-c492fd4a9421" xlink:to="loc_srt_SegmentGeographicalDomain_b9e9d92e-2b03-41d0-a3c0-36a4e4e7b947" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_country_US_f3e88d35-995b-4bcd-a6eb-805adb016e80" xlink:href="https://xbrl.sec.gov/country/2022/country-2022.xsd#country_US"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_b9e9d92e-2b03-41d0-a3c0-36a4e4e7b947" xlink:to="loc_country_US_f3e88d35-995b-4bcd-a6eb-805adb016e80" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_EuropeMember_d9ea8b21-fb81-4e79-aae3-119c88872cee" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_EuropeMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_b9e9d92e-2b03-41d0-a3c0-36a4e4e7b947" xlink:to="loc_srt_EuropeMember_d9ea8b21-fb81-4e79-aae3-119c88872cee" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_AmericasExUSMember_c557d7c0-efe0-4edf-a8b9-7b2d1d1ba7bd" xlink:href="calx-20221231.xsd#calx_AmericasExUSMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_b9e9d92e-2b03-41d0-a3c0-36a4e4e7b947" xlink:to="loc_calx_AmericasExUSMember_c557d7c0-efe0-4edf-a8b9-7b2d1d1ba7bd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_MiddleEastAndAfricaMember_dad55d25-e722-45b6-af5e-06efb2ec9be0" xlink:href="calx-20221231.xsd#calx_MiddleEastAndAfricaMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_b9e9d92e-2b03-41d0-a3c0-36a4e4e7b947" xlink:to="loc_calx_MiddleEastAndAfricaMember_dad55d25-e722-45b6-af5e-06efb2ec9be0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_AsiaPacificMember_a34394ee-7f6b-4c4c-bfc1-91f9d9b82deb" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_AsiaPacificMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_b9e9d92e-2b03-41d0-a3c0-36a4e4e7b947" xlink:to="loc_srt_AsiaPacificMember_a34394ee-7f6b-4c4c-bfc1-91f9d9b82deb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_ab57f09f-c596-488f-b9b3-4f97de2ddc0d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_1bd658e2-b251-441b-b577-36028f68f4b7" xlink:to="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_ab57f09f-c596-488f-b9b3-4f97de2ddc0d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_28767dcf-78c9-4c70-8e6b-22d6d956b8fb" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_ab57f09f-c596-488f-b9b3-4f97de2ddc0d" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_28767dcf-78c9-4c70-8e6b-22d6d956b8fb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerAbstract_596050f8-4f0f-43c0-addd-4d9bc84bceb3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_bed4298c-19b0-4853-9445-499e1bef256a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_596050f8-4f0f-43c0-addd-4d9bc84bceb3" xlink:to="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_bed4298c-19b0-4853-9445-499e1bef256a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_b021677a-8a99-4c18-a8a7-47e8e4aba36c" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_StatementGeographicalAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_bed4298c-19b0-4853-9445-499e1bef256a" xlink:to="loc_srt_StatementGeographicalAxis_b021677a-8a99-4c18-a8a7-47e8e4aba36c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_3568af99-8ccd-4d1f-9669-e0836ad7fc80" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_SegmentGeographicalDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_StatementGeographicalAxis_b021677a-8a99-4c18-a8a7-47e8e4aba36c" xlink:to="loc_srt_SegmentGeographicalDomain_3568af99-8ccd-4d1f-9669-e0836ad7fc80" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_country_US_aa60f9ad-c86f-44d9-9561-667958b4280a" xlink:href="https://xbrl.sec.gov/country/2022/country-2022.xsd#country_US"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_3568af99-8ccd-4d1f-9669-e0836ad7fc80" xlink:to="loc_country_US_aa60f9ad-c86f-44d9-9561-667958b4280a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_country_CN_f3f15190-9ea8-4b1f-999c-e0e10b565d5c" xlink:href="https://xbrl.sec.gov/country/2022/country-2022.xsd#country_CN"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_3568af99-8ccd-4d1f-9669-e0836ad7fc80" xlink:to="loc_country_CN_f3f15190-9ea8-4b1f-999c-e0e10b565d5c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_country_IN_86b934ab-917b-4940-a645-e0a9a38412c6" xlink:href="https://xbrl.sec.gov/country/2022/country-2022.xsd#country_IN"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_3568af99-8ccd-4d1f-9669-e0836ad7fc80" xlink:to="loc_country_IN_86b934ab-917b-4940-a645-e0a9a38412c6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_63425276-f6c8-46a8-8035-e63b9981a10d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_bed4298c-19b0-4853-9445-499e1bef256a" xlink:to="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_63425276-f6c8-46a8-8035-e63b9981a10d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_76ba99d1-b313-4359-a111-7d595429dbdf" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_63425276-f6c8-46a8-8035-e63b9981a10d" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentNet_76ba99d1-b313-4359-a111-7d595429dbdf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersContractCostsDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#RevenuefromContractswithCustomersContractCostsDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/RevenuefromContractswithCustomersContractCostsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerAbstract_0df38858-764b-4e9b-af79-17da1c27a87a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CapitalizedContractCostGross_4ef8b550-7838-4c6d-8592-0faabe09407d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CapitalizedContractCostGross"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_0df38858-764b-4e9b-af79-17da1c27a87a" xlink:to="loc_us-gaap_CapitalizedContractCostGross_4ef8b550-7838-4c6d-8592-0faabe09407d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CapitalizedContractCostAmortization_279a89fb-8f59-4889-a260-eb61032ba1ce" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CapitalizedContractCostAmortization"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_0df38858-764b-4e9b-af79-17da1c27a87a" xlink:to="loc_us-gaap_CapitalizedContractCostAmortization_279a89fb-8f59-4889-a260-eb61032ba1ce" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CapitalizedContractCostImpairmentLoss_73455491-4886-48d8-8f6f-3e7604989bcd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CapitalizedContractCostImpairmentLoss"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_0df38858-764b-4e9b-af79-17da1c27a87a" xlink:to="loc_us-gaap_CapitalizedContractCostImpairmentLoss_73455491-4886-48d8-8f6f-3e7604989bcd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#RevenuefromContractswithCustomersPerformanceObligationDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerAbstract_7d145eef-b268-4636-b29b-5d141c4a64e9" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligation_d9277d9e-bc30-49f4-bd1e-c7030d96ac7e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligation"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_7d145eef-b268-4636-b29b-5d141c4a64e9" xlink:to="loc_us-gaap_RevenueRemainingPerformanceObligation_d9277d9e-bc30-49f4-bd1e-c7030d96ac7e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable_9648c4eb-6524-45ce-a9e4-aabab3687f1a" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_7d145eef-b268-4636-b29b-5d141c4a64e9" xlink:to="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable_9648c4eb-6524-45ce-a9e4-aabab3687f1a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis_041e0232-cc67-49d3-aa79-172d07f418cd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable_9648c4eb-6524-45ce-a9e4-aabab3687f1a" xlink:to="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis_041e0232-cc67-49d3-aa79-172d07f418cd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems_1098f399-8948-4b12-949c-22e1e235c76d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable_9648c4eb-6524-45ce-a9e4-aabab3687f1a" xlink:to="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems_1098f399-8948-4b12-949c-22e1e235c76d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationPercentage_fe54ef58-8934-4bbf-b375-6311cba0d889" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationPercentage"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems_1098f399-8948-4b12-949c-22e1e235c76d" xlink:to="loc_us-gaap_RevenueRemainingPerformanceObligationPercentage_fe54ef58-8934-4bbf-b375-6311cba0d889" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1_be07473f-f84b-490c-adcb-ee0795220a56" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems_1098f399-8948-4b12-949c-22e1e235c76d" xlink:to="loc_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1_be07473f-f84b-490c-adcb-ee0795220a56" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails_1" xlink:type="simple" xlink:href="calx-20221231.xsd#RevenuefromContractswithCustomersPerformanceObligationDetails_1"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails_1" xlink:type="extended"/>
  <link:roleRef roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersContractAssetsandLiabilitiesDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#RevenuefromContractswithCustomersContractAssetsandLiabilitiesDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/RevenuefromContractswithCustomersContractAssetsandLiabilitiesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerAbstract_12f912da-5cdd-4f57-9d68-310f48334e96" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerAssetNet_aa2ddde5-2a71-4448-b8a1-2bbb0d637394" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ContractWithCustomerAssetNet"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_12f912da-5cdd-4f57-9d68-310f48334e96" xlink:to="loc_us-gaap_ContractWithCustomerAssetNet_aa2ddde5-2a71-4448-b8a1-2bbb0d637394" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent_24ab1037-cba2-4dca-8f81-be6893f031c8" xlink:href="calx-20221231.xsd#calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_12f912da-5cdd-4f57-9d68-310f48334e96" xlink:to="loc_calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent_24ab1037-cba2-4dca-8f81-be6893f031c8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_ContractWithCustomerAssetPriorPeriodNotRecognized_c36d3842-fe8e-4ca4-aacc-13f63dbbf3e6" xlink:href="calx-20221231.xsd#calx_ContractWithCustomerAssetPriorPeriodNotRecognized"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_12f912da-5cdd-4f57-9d68-310f48334e96" xlink:to="loc_calx_ContractWithCustomerAssetPriorPeriodNotRecognized_c36d3842-fe8e-4ca4-aacc-13f63dbbf3e6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiability_ba4f13aa-1c08-4694-aecd-4b1eae13070e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ContractWithCustomerLiability"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_12f912da-5cdd-4f57-9d68-310f48334e96" xlink:to="loc_us-gaap_ContractWithCustomerLiability_ba4f13aa-1c08-4694-aecd-4b1eae13070e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityRevenueRecognized_9a4508c9-8de2-444a-b61d-589147f466d5" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ContractWithCustomerLiabilityRevenueRecognized"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_12f912da-5cdd-4f57-9d68-310f48334e96" xlink:to="loc_us-gaap_ContractWithCustomerLiabilityRevenueRecognized_9a4508c9-8de2-444a-b61d-589147f466d5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInContractWithCustomerLiability_25d11a2e-032f-4743-91ba-819f1caeb65e" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_IncreaseDecreaseInContractWithCustomerLiability"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_12f912da-5cdd-4f57-9d68-310f48334e96" xlink:to="loc_us-gaap_IncreaseDecreaseInContractWithCustomerLiability_25d11a2e-032f-4743-91ba-819f1caeb65e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails" xlink:type="simple" xlink:href="calx-20221231.xsd#RevenuefromContractswithCustomersConcentrationRiskDetails"/>
  <link:presentationLink xlink:role="http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerAbstract_f7d8d87c-e247-49a9-990c-6202dd1c6254" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTable_3ea3c5e4-12ee-43fa-8336-a06366d743fd" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_f7d8d87c-e247-49a9-990c-6202dd1c6254" xlink:to="loc_us-gaap_ConcentrationRiskTable_3ea3c5e4-12ee-43fa-8336-a06366d743fd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MajorCustomersAxis_b1eb8b3a-66f6-49b9-b0db-c04aa62e06b6" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_MajorCustomersAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskTable_3ea3c5e4-12ee-43fa-8336-a06366d743fd" xlink:to="loc_srt_MajorCustomersAxis_b1eb8b3a-66f6-49b9-b0db-c04aa62e06b6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_NameOfMajorCustomerDomain_8e51a0fb-4847-4dda-ad3f-f09be5d8d895" xlink:href="https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd#srt_NameOfMajorCustomerDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_MajorCustomersAxis_b1eb8b3a-66f6-49b9-b0db-c04aa62e06b6" xlink:to="loc_srt_NameOfMajorCustomerDomain_8e51a0fb-4847-4dda-ad3f-f09be5d8d895" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_LumenTechnologiesIncMember_202c5d02-bd51-4c1e-903d-7a6f47e66eff" xlink:href="calx-20221231.xsd#calx_LumenTechnologiesIncMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_NameOfMajorCustomerDomain_8e51a0fb-4847-4dda-ad3f-f09be5d8d895" xlink:to="loc_calx_LumenTechnologiesIncMember_202c5d02-bd51-4c1e-903d-7a6f47e66eff" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_OneCustomerMember_b189e2cf-8077-4d69-b3a0-090a5878bfdd" xlink:href="calx-20221231.xsd#calx_OneCustomerMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_NameOfMajorCustomerDomain_8e51a0fb-4847-4dda-ad3f-f09be5d8d895" xlink:to="loc_calx_OneCustomerMember_b189e2cf-8077-4d69-b3a0-090a5878bfdd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_calx_CustomerTwoMember_1c8383e7-6445-496e-8601-93c1ff7773b2" xlink:href="calx-20221231.xsd#calx_CustomerTwoMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_NameOfMajorCustomerDomain_8e51a0fb-4847-4dda-ad3f-f09be5d8d895" xlink:to="loc_calx_CustomerTwoMember_1c8383e7-6445-496e-8601-93c1ff7773b2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByTypeAxis_fb87f3d8-7506-4021-ad64-0907c5bcd0c0" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskByTypeAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskTable_3ea3c5e4-12ee-43fa-8336-a06366d743fd" xlink:to="loc_us-gaap_ConcentrationRiskByTypeAxis_fb87f3d8-7506-4021-ad64-0907c5bcd0c0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTypeDomain_5ce577f2-59b6-4eb1-b1e9-92725775461d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskTypeDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskByTypeAxis_fb87f3d8-7506-4021-ad64-0907c5bcd0c0" xlink:to="loc_us-gaap_ConcentrationRiskTypeDomain_5ce577f2-59b6-4eb1-b1e9-92725775461d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CustomerConcentrationRiskMember_d38567ed-384c-4c1d-89d5-2da40b968617" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_CustomerConcentrationRiskMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskTypeDomain_5ce577f2-59b6-4eb1-b1e9-92725775461d" xlink:to="loc_us-gaap_CustomerConcentrationRiskMember_d38567ed-384c-4c1d-89d5-2da40b968617" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_7fa3f0f8-2d0b-4b0b-b9ae-90b0c3a49fb3" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskTable_3ea3c5e4-12ee-43fa-8336-a06366d743fd" xlink:to="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_7fa3f0f8-2d0b-4b0b-b9ae-90b0c3a49fb3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskBenchmarkDomain_c64e56b3-fded-479d-a5a1-4dc5a2a55450" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskBenchmarkDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_7fa3f0f8-2d0b-4b0b-b9ae-90b0c3a49fb3" xlink:to="loc_us-gaap_ConcentrationRiskBenchmarkDomain_c64e56b3-fded-479d-a5a1-4dc5a2a55450" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerMember_584df4b0-3044-4cce-b0d1-5225fa0a619c" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_RevenueFromContractWithCustomerMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskBenchmarkDomain_c64e56b3-fded-479d-a5a1-4dc5a2a55450" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerMember_584df4b0-3044-4cce-b0d1-5225fa0a619c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableMember_37c78c90-058d-48fe-a639-6be9672d9a30" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_AccountsReceivableMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskBenchmarkDomain_c64e56b3-fded-479d-a5a1-4dc5a2a55450" xlink:to="loc_us-gaap_AccountsReceivableMember_37c78c90-058d-48fe-a639-6be9672d9a30" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskLineItems_7f3938ed-46a9-4d6f-a944-64d5b3fd627d" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskLineItems"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskTable_3ea3c5e4-12ee-43fa-8336-a06366d743fd" xlink:to="loc_us-gaap_ConcentrationRiskLineItems_7f3938ed-46a9-4d6f-a944-64d5b3fd627d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskPercentage1_07f5dd68-87ad-4858-b471-f46145a08c7f" xlink:href="https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd#us-gaap_ConcentrationRiskPercentage1"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskLineItems_7f3938ed-46a9-4d6f-a944-64d5b3fd627d" xlink:to="loc_us-gaap_ConcentrationRiskPercentage1_07f5dd68-87ad-4858-b471-f46145a08c7f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>GRAPHIC
<SEQUENCE>12
<FILENAME>calx-20221231_g1.jpg
<TEXT>
begin 644 calx-20221231_g1.jpg
M_]C_X  02D9)1@ ! 0$ 8 !@  #_VP!#  ," @," @,# P,$ P,$!0@%!00$
M!0H'!P8(# H,# L*"PL-#A(0#0X1#@L+$!80$1,4%145# \7&!84&!(4%13_
MVP!# 0,$! 4$!0D%!0D4#0L-%!04%!04%!04%!04%!04%!04%!04%!04%!04
M%!04%!04%!04%!04%!04%!04%!04%!3_P  1" (+ \L# 2(  A$! Q$!_\0
M'P   04! 0$! 0$           $" P0%!@<("0H+_\0 M1   @$# P($ P4%
M! 0   %] 0(#  01!1(A,4$&$U%A!R)Q%#*!D:$((T*QP152T? D,V)R@@D*
M%A<8&1HE)B<H*2HT-38W.#DZ0T1%1D=(24I35%565UA96F-D969G:&EJ<W1U
M=G=X>7J#A(6&AXB)BI*3E)66EYB9FJ*CI*6FIZBIJK*SM+6VM[BYNL+#Q,7&
MQ\C)RM+3U-76U]C9VN'BX^3EYN?HZ>KQ\O/T]?;W^/GZ_\0 'P$  P$! 0$!
M 0$! 0        $" P0%!@<("0H+_\0 M1$  @$"! 0#! <%! 0  0)W  $"
M Q$$!2$Q!A)!40=A<1,B,H$(%$*1H;'!"2,S4O 58G+1"A8D-.$E\1<8&1HF
M)R@I*C4V-S@Y.D-$149'2$E*4U155E=865IC9&5F9VAI:G-T=79W>'EZ@H.$
MA8:'B(F*DI.4E9:7F)F:HJ.DI::GJ*FJLK.TM;:WN+FZPL/$Q<;'R,G*TM/4
MU=;7V-G:XN/DY>;GZ.GJ\O/T]?;W^/GZ_]H # ,!  (1 Q$ /P#]$_B%\6G\
M#^*M!\.6'@[Q!XSUK6+*]U"*VT)[&/R8+5[:.5Y&N[J!?O7D( 4L3EN !65_
MPN3Q=_T0KX@?^!WA[_Y:T>(_^3IOAY_V)GB7_P!+M"KU6@#RK_A<GB[_ *(5
M\0/_  .\/?\ RUH_X7)XN_Z(5\0/_ [P]_\ +6O5:* /*O\ A<GB[_HA7Q _
M\#O#W_RUH_X7)XN_Z(5\0/\ P.\/?_+6O5:* /*O^%R>+O\ HA7Q _\  [P]
M_P#+6C_A<GB[_HA7Q _\#O#W_P M:]5HH \J_P"%R>+O^B%?$#_P.\/?_+6C
M_A<GB[_HA7Q _P# [P]_\M:]5HH \J_X7)XN_P"B%?$#_P #O#W_ ,M:/^%R
M>+O^B%?$#_P.\/?_ "UKU6B@#RK_ (7)XN_Z(5\0/_ [P]_\M:/^%R>+O^B%
M?$#_ ,#O#W_RUKU6B@#RK_A<GB[_ *(5\0/_  .\/?\ RUH_X7)XN_Z(5\0/
M_ [P]_\ +6O5:* /*O\ A<GB[_HA7Q _\#O#W_RUH_X7)XN_Z(5\0/\ P.\/
M?_+6O5:* /*O^%R>+O\ HA7Q _\  [P]_P#+6C_A<GB[_HA7Q _\#O#W_P M
M:]5HH \J_P"%R>+O^B%?$#_P.\/?_+6C_A<GB[_HA7Q _P# [P]_\M:]5HH
M\J_X7)XN_P"B%?$#_P #O#W_ ,M:/^%R>+O^B%?$#_P.\/?_ "UKU6B@#RK_
M (7)XN_Z(5\0/_ [P]_\M:/^%R>+O^B%?$#_ ,#O#W_RUKU6B@#RK_A<GB[_
M *(5\0/_  .\/?\ RUH_X7)XN_Z(5\0/_ [P]_\ +6O5:* /*O\ A<GB[_HA
M7Q _\#O#W_RUH_X7)XN_Z(5\0/\ P.\/?_+6O5:* /*O^%R>+O\ HA7Q _\
M [P]_P#+6C_A<GB[_HA7Q _\#O#W_P M:]5HH \J_P"%R>+O^B%?$#_P.\/?
M_+6C_A<GB[_HA7Q _P# [P]_\M:]5HH \J_X7)XN_P"B%?$#_P #O#W_ ,M:
M/^%R>+O^B%?$#_P.\/?_ "UKU6B@#RK_ (7)XN_Z(5\0/_ [P]_\M:/^%R>+
MO^B%?$#_ ,#O#W_RUKU6B@#RK_A<GB[_ *(5\0/_  .\/?\ RUH_X7)XN_Z(
M5\0/_ [P]_\ +6O5:* /*O\ A<GB[_HA7Q _\#O#W_RUH_X7)XN_Z(5\0/\
MP.\/?_+6O5:* /*O^%R>+O\ HA7Q _\  [P]_P#+6C_A<GB[_HA7Q _\#O#W
M_P M:]5HH \J_P"%R>+O^B%?$#_P.\/?_+6C_A<GB[_HA7Q _P# [P]_\M:]
M5HH \J_X7)XN_P"B%?$#_P #O#W_ ,M:/^%R>+O^B%?$#_P.\/?_ "UKU6B@
M#RK_ (7)XN_Z(5\0/_ [P]_\M:/^%R>+O^B%?$#_ ,#O#W_RUKU6B@#RK_A<
MGB[_ *(5\0/_  .\/?\ RUH_X7)XN_Z(5\0/_ [P]_\ +6O5:* /*O\ A<GB
M[_HA7Q _\#O#W_RUH_X7)XN_Z(5\0/\ P.\/?_+6O5:* /*O^%R>+O\ HA7Q
M _\  [P]_P#+6C_A<GB[_HA7Q _\#O#W_P M:]5HH \J_P"%R>+O^B%?$#_P
M.\/?_+6C_A<GB[_HA7Q _P# [P]_\M:]5HH \J_X7)XN_P"B%?$#_P #O#W_
M ,M:/^%R>+O^B%?$#_P.\/?_ "UKU6B@#RK_ (7)XN_Z(5\0/_ [P]_\M:/^
M%R>+O^B%?$#_ ,#O#W_RUKU6B@#RK_A<GB[_ *(5\0/_  .\/?\ RUH_X7)X
MN_Z(5\0/_ [P]_\ +6O5:* /*O\ A<GB[_HA7Q _\#O#W_RUH_X7)XN_Z(5\
M0/\ P.\/?_+6O5:* /*O^%R>+O\ HA7Q _\  [P]_P#+6C_A<GB[_HA7Q _\
M#O#W_P M:]5HH \J_P"%R>+O^B%?$#_P.\/?_+6C_A<GB[_HA7Q _P# [P]_
M\M:]5HH \J_X7)XN_P"B%?$#_P #O#W_ ,M:/^%R>+O^B%?$#_P.\/?_ "UK
MU6B@#RK_ (7)XN_Z(5\0/_ [P]_\M:/^%R>+O^B%?$#_ ,#O#W_RUKU6B@#R
MK_A<GB[_ *(5\0/_  .\/?\ RUH_X7)XN_Z(5\0/_ [P]_\ +6O5:* /*O\
MA<GB[_HA7Q _\#O#W_RUH_X7)XN_Z(5\0/\ P.\/?_+6O5:* /*O^%R>+O\
MHA7Q _\  [P]_P#+6C_A<GB[_HA7Q _\#O#W_P M:]5HH \J_P"%R>+O^B%?
M$#_P.\/?_+6C_A<GB[_HA7Q _P# [P]_\M:]5HH \J_X7)XN_P"B%?$#_P #
MO#W_ ,M:/^%R>+O^B%?$#_P.\/?_ "UKU6B@#RK_ (7)XN_Z(5\0/_ [P]_\
MM:/^%R>+O^B%?$#_ ,#O#W_RUKU6B@#RK_A<GB[_ *(5\0/_  .\/?\ RUH_
MX7)XN_Z(5\0/_ [P]_\ +6O5:* /*O\ A<GB[_HA7Q _\#O#W_RUH_X7)XN_
MZ(5\0/\ P.\/?_+6O5:* /*O^%R>+O\ HA7Q _\  [P]_P#+6C_A<GB[_HA7
MQ _\#O#W_P M:]5HH \J_P"%R>+O^B%?$#_P.\/?_+6C_A<GB[_HA7Q _P#
M[P]_\M:]5HH \J_X7)XN_P"B%?$#_P #O#W_ ,M:/^%R>+O^B%?$#_P.\/?_
M "UKU6B@#RK_ (7)XN_Z(5\0/_ [P]_\M:/^%R>+O^B%?$#_ ,#O#W_RUKU6
MB@#RK_A<GB[_ *(5\0/_  .\/?\ RUH_X7)XN_Z(5\0/_ [P]_\ +6O5:* /
M*O\ A<GB[_HA7Q _\#O#W_RUH_X7)XN_Z(5\0/\ P.\/?_+6O5:* /*O^%R>
M+O\ HA7Q _\  [P]_P#+6C_A<GB[_HA7Q _\#O#W_P M:]5HH \J_P"%R>+O
M^B%?$#_P.\/?_+6C_A<GB[_HA7Q _P# [P]_\M:]5HH \J_X7)XN_P"B%?$#
M_P #O#W_ ,M:/^%R>+O^B%?$#_P.\/?_ "UKU6B@#RK_ (7)XN_Z(5\0/_ [
MP]_\M:/^%R>+O^B%?$#_ ,#O#W_RUKU6B@#RK_A<GB[_ *(5\0/_  .\/?\
MRUH_X7)XN_Z(5\0/_ [P]_\ +6O5:* /*O\ A<GB[_HA7Q _\#O#W_RUH_X7
M)XN_Z(5\0/\ P.\/?_+6O5:* /*O^%R>+O\ HA7Q _\  [P]_P#+6C_A<GB[
M_HA7Q _\#O#W_P M:]5HH \J_P"%R>+O^B%?$#_P.\/?_+6C_A<GB[_HA7Q
M_P# [P]_\M:]5HH \J_X7)XN_P"B%?$#_P #O#W_ ,M:/^%R>+O^B%?$#_P.
M\/?_ "UKU6B@#S7PG\9[G7O'UIX1UGX?^*/!>I7NF7>JVDNM2Z;+#/%;2VT4
MR@VEY.0P:\AX8*""<'C%>E5Y5XC_ .3IOAY_V)GB7_TNT*O5: /*O$?_ "=-
M\//^Q,\2_P#I=H5>JUY5XC_Y.F^'G_8F>)?_ $NT*O5: "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH *\4U#4?%OQ3^,7BWPQI'C&_\">'O
M"5O9QRSZ):6<U]J%[<QF8[FNX)XTACB\L!5CW,TC$N FUO:Z\J\3?"7Q';?$
M?4/&O@'Q5IWAK4]8LH;'6;/6]&?5+.\\@L;>94CN;=XI4621"1(5964%,HK
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
M+C0*TA4M*>!QM^C]"T>#P_H>GZ7;8^S6-O';1;8HXAM10H^2-51>!T154=
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
MH/AFQ\,>+_%?A+4-"TB308]:TF>T-Y<V+R>88IO.MI(B0_S*ZQJZ$G:PW-D
MX[Q!^VM=MIFNZ]X2\#PZ]X6T7P;IWCB[OM1UHV%P;&Z6X?RXX!;RAIE6W)"E
MU4DD%UP-W:_"?XD^,/%W[0'Q4T/4DL3X/TFUTF?21'<;IXOM$+N<IY"D[P"S
M;I&V%0%W!B1I:Y^S+X7\06?C:UN=2UTIXM\+6WA&^DDOA/,EI EPJ2++*KNT
MY%U(6DE9]Q"DC.<]+X7^$^G>$?'VL^*K#4=0$VKZ?9Z?>:?(83;.;8,L4_\
MJ_,$@1BIP^PC^'(S0!Y]K?[3EUI7BG4Y(O"2W7@#1O$UKX2U7Q%_:16[AOIS
M#&KQ6?DD20+-=6\3N9E<%I"L;!!NJ_LJ:GXG\4:U\6-;\5!UO4\67FE0QQ>(
MKN_M8HK=MHBBMI(XXH%4%?GC4-*2Q?&!73:M^S3X=U?QI<ZU)JVM1:1>ZO;^
M(=0\*12P?V7?:E J"*ZD!A,P8-# Y1)5C9H$+(V7W=EX!^'.F_#F/Q FFSW4
MXUO6;K7+C[4ZMLGN&#.J;57" C@')]2: /FKX,ZAJ_A3]HJZTKXC>(/&^G>)
M[K,5DMYJK76@ZW)(]_(5BB5Y(+4>3!$\2%+:8BW< ./.#:&A^.OB)X'\=_M)
M7OBCQ)'XCO?#W@[2M;TW3;&U:#3[!_*U1S%!"SL6+&%-TC'=(0.%4(B=UX&_
M9(\/^!OB1:^)(=?UK4-'TL!]"\+W;0FQTF7%RN^-EC$D@1+N=(ED=A&LK@9_
M=^7Z!#\)-"7QIXT\23&YO)_%NFV>DZE9SNIM_(MA<A @"A@6%W(&RQSA<8P<
M@'RKJ?Q"\4? GP+X^;3/$6N:_=?\*FM?%T5UKU]-J#0:K^_BEG0RLWEK(3&Y
MA7$2F([%4%@?:?@?'>>"/C)\1/AT-9US7=%TO2M%UBUN->U*?4;B.:Y%W#.O
MGSN[[6-FD@3=M5GDV@ XK5\)_LO>%O#WA[Q%HVJ:EK7C&TUO0X?#$S:_/$\D
M.DQ)*D=G&T,49"@3R$R-NE8L"[L54CH_A7\'[/X7-JUT=>UGQ7K6J?9TNM9U
M]X&NGA@C\N"']Q#$@1 7(^3<6D=F+%J .^HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** /*O$?_)TWP\_[$SQ+_Z7:%7J
MM>5>(_\ DZ;X>?\ 8F>)?_2[0J]5H \J\1_\G3?#S_L3/$O_ *7:%7JM>5>(
M_P#DZ;X>?]B9XE_]+M"KU6@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** / OVSM)L=>^'O@O3-3
MLK?4=-O?'WAFVNK.[B66&>)]4@5XW1@0RLI(*D8()!KD?&<_AO\ 93^+5SJ'
M@GP[9:/X<7X?Z]XDU[PSH4"6=M*VG/:M;3B) (XY7$UQ%YFW+ *&SL7;]!_$
M3X:^'_BKX?CT7Q):W%U8QW<%]%]DOKBRFBN(9!)#*DT#I(C(ZJP*L.0*S?"/
MP3\'^"I-7EL]/NM1NM6@6TOKSQ!J=UK%S/;KNQ TUY+*_DC>Y\K=LR['&6)(
M!\^:+^UUXZTGP;XEUG7O##:PEKX:BUJTOX_"NK>';"&]>:.'[!)+?@^>,S1N
M)XL;D20^6N!GL?BK\7OB9\#_  GI2>(I/#>N:SXB\1VFB:5JV@^']2FCMTD@
MEGG>;2XI9IYFC6VEVB*;]X9$R(@C,W>>&_V9_AOX6L-5LK;P\]]::GIBZ)/#
MK6HW6IJNGC=BSB^TRR>3!\Q_=1;4X7CY5PR']F/X=1:+J.FR:3?WOV^XM;J;
M4;_7+^ZU)9;8DVS1WTL[7,7E$L4$<BA#)(5QO;(!Y9IO[1'Q+\0GP%H=MI%A
MH.N^(/$^I^'VU;Q%X;U&R@N+>VT^6\BOH+">6*=%<1A3&[GYE=0^ &K$\-_M
M%?$+Q7H/A*7Q-#X9_L?QI;^(-)^RZ397$=Q;7.GPW&ZX\Z2=E,<IM9<0^7E
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
MM%>5?\+D\7?]$)^('_@=X>_^6M'_  N3Q=_T0GX@?^!WA[_Y:T >JT5Y5_PN
M3Q=_T0GX@?\ @=X>_P#EK1_PN3Q=_P!$)^('_@=X>_\ EK0!ZK17E7_"Y/%W
M_1"?B!_X'>'O_EK1_P +D\7?]$)^('_@=X>_^6M 'JM%>5?\+D\7?]$)^('_
M ('>'O\ Y:T?\+D\7?\ 1"?B!_X'>'O_ ):T >JT5Y5_PN3Q=_T0GX@?^!WA
M[_Y:T?\ "Y/%W_1"?B!_X'>'O_EK0!ZK17E7_"Y/%W_1"?B!_P"!WA[_ .6M
M'_"Y/%W_ $0GX@?^!WA[_P"6M 'JM%>5?\+D\7?]$)^('_@=X>_^6M'_  N3
MQ=_T0GX@?^!WA[_Y:T >JT5Y5_PN3Q=_T0GX@?\ @=X>_P#EK1_PN3Q=_P!$
M)^('_@=X>_\ EK0!ZK17E7_"Y/%W_1"?B!_X'>'O_EK1_P +D\7?]$)^('_@
M=X>_^6M 'JM%>5?\+D\7?]$)^('_ ('>'O\ Y:T?\+D\7?\ 1"?B!_X'>'O_
M ):T >JT5Y5_PN3Q=_T0GX@?^!WA[_Y:T?\ "Y/%W_1"?B!_X'>'O_EK0!ZK
M17E7_"Y/%W_1"?B!_P"!WA[_ .6M'_"Y/%W_ $0GX@?^!WA[_P"6M 'JM%>5
M?\+D\7?]$)^('_@=X>_^6M'_  N3Q=_T0GX@?^!WA[_Y:T >JT5Y5_PN3Q=_
MT0GX@?\ @=X>_P#EK1_PN3Q=_P!$)^('_@=X>_\ EK0!ZK17E7_"Y/%W_1"?
MB!_X'>'O_EK1_P +D\7?]$)^('_@=X>_^6M 'JM%>5?\+D\7?]$)^('_ ('>
M'O\ Y:T?\+D\7?\ 1"?B!_X'>'O_ ):T >JT5Y5_PN3Q=_T0GX@?^!WA[_Y:
MT?\ "Y/%W_1"?B!_X'>'O_EK0!ZK17E7_"Y/%W_1"?B!_P"!WA[_ .6M'_"Y
M/%W_ $0GX@?^!WA[_P"6M 'JM%>5?\+D\7?]$)^('_@=X>_^6M'_  N3Q=_T
M0GX@?^!WA[_Y:T >JT5Y5_PN3Q=_T0GX@?\ @=X>_P#EK1_PN3Q=_P!$)^('
M_@=X>_\ EK0!ZK17E7_"Y/%W_1"?B!_X'>'O_EK1_P +D\7?]$)^('_@=X>_
M^6M 'JM%>5?\+D\7?]$)^('_ ('>'O\ Y:T?\+D\7?\ 1"?B!_X'>'O_ ):T
M >JT5Y5_PN3Q=_T0GX@?^!WA[_Y:T?\ "Y/%W_1"?B!_X'>'O_EK0!ZK17E7
M_"Y/%W_1"?B!_P"!WA[_ .6M'_"Y/%W_ $0GX@?^!WA[_P"6M 'JM%>5?\+D
M\7?]$)^('_@=X>_^6M'_  N3Q=_T0GX@?^!WA[_Y:T >JT5Y5_PN3Q=_T0GX
M@?\ @=X>_P#EK1_PN3Q=_P!$)^('_@=X>_\ EK0!ZK17E7_"Y/%W_1"?B!_X
M'>'O_EK1_P +D\7?]$)^('_@=X>_^6M 'JM%>5?\+D\7?]$)^('_ ('>'O\
MY:T?\+D\7?\ 1"?B!_X'>'O_ ):T >JT5Y5_PN3Q=_T0GX@?^!WA[_Y:T?\
M"Y/%W_1"?B!_X'>'O_EK0!ZK17E7_"Y/%W_1"?B!_P"!WA[_ .6M'_"Y/%W_
M $0GX@?^!WA[_P"6M 'JM%>5?\+D\7?]$)^('_@=X>_^6M'_  N3Q=_T0GX@
M?^!WA[_Y:T >JT5Y5_PN3Q=_T0GX@?\ @=X>_P#EK1_PN3Q=_P!$)^('_@=X
M>_\ EK0!ZK17E7_"Y/%W_1"?B!_X'>'O_EK1_P +D\7?]$)^('_@=X>_^6M
M'JM%>5?\+D\7?]$)^('_ ('>'O\ Y:T?\+D\7?\ 1"?B!_X'>'O_ ):T >JT
M5Y5_PN3Q=_T0GX@?^!WA[_Y:T?\ "Y/%W_1"?B!_X'>'O_EK0!ZK17E7_"Y/
M%W_1"?B!_P"!WA[_ .6M'_"Y/%W_ $0GX@?^!WA[_P"6M 'JM%>5?\+D\7?]
M$)^('_@=X>_^6M'_  N3Q=_T0GX@?^!WA[_Y:T >JT5Y5_PN3Q=_T0GX@?\
M@=X>_P#EK1_PN3Q=_P!$)^('_@=X>_\ EK0!ZK17E7_"Y/%W_1"?B!_X'>'O
M_EK1_P +D\7?]$)^('_@=X>_^6M 'JM%>5?\+D\7?]$)^('_ ('>'O\ Y:T?
M\+D\7?\ 1"?B!_X'>'O_ ):T >JT5Y5_PN3Q=_T0GX@?^!WA[_Y:T?\ "Y/%
MW_1"?B!_X'>'O_EK0!ZK17E7_"Y/%W_1"?B!_P"!WA[_ .6M'_"Y/%W_ $0G
MX@?^!WA[_P"6M 'JM%>5?\+D\7?]$)^('_@=X>_^6M'_  N3Q=_T0GX@?^!W
MA[_Y:T >JT5Y5_PN3Q=_T0GX@?\ @=X>_P#EK1_PN3Q=_P!$)^('_@=X>_\
MEK0!ZK17E7_"Y/%W_1"?B!_X'>'O_EK1_P +D\7?]$)^('_@=X>_^6M 'JM%
M>5:?\=+_ /X2[PQH.O?##QAX2_X2*]ET^RU#5)](EM_/2TN+HHXM;^:09BM9
M<'81D $C->JT >5>(_\ DZ;X>?\ 8F>)?_2[0J]5KRKQ'_R=-\//^Q,\2_\
MI=H5>JT >5>(_P#DZ;X>?]B9XE_]+M"KU6O*O$?_ "=-\//^Q,\2_P#I=H5>
MJT >?3? /P/)X%T;PC'I-Q9Z+HLQN-,-CJ5U;7=C*2^7ANXY5GC8B6125D!*
MR,IRI(I+SX!>!;OP+H7A!=&DLM%T*59],_LZ_N;.[M)@'!FCNH9%G$KB23?)
MYFZ3S)-Y;>V?0J* /,_$?[-OPY\5>&] T&^\."/2=#L7TNPM["]N;/99.BI)
M:NT,B-+ ZH@>&0LC[1N4XKK->\!Z'XHMY[75;)KW3KC3IM)GTV2>3[%-;2[=
MZ/;!O*8X0 .5+*"P4@,P/044 <)X=^!_@KPOX2UWPU:Z.]YI&O!AJL>KWMQJ
M,M^&A6 K--<R222 1(D8#,0JJ , 5H?#SX7>'/A9I][:>';2YA%].+FZN+_4
M+B_N;B01I$K23W$DDK[8XXT4,Q"JB@8 Q75T4 %>5?LG?\FL_!O_ +$S1O\
MTAAKU6O*OV3O^36?@W_V)FC?^D,- 'JM%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 >5?&3_DHGP*_['.Y_]1[6:]5KRKXR?\E$^!7_ &.=
MS_ZCVLUZK0!Y5XC_ .3IOAY_V)GB7_TNT*O5:\J\1_\ )TWP\_[$SQ+_ .EV
MA5ZK0!Y5XC_Y.F^'G_8F>)?_ $NT*O5:\J\1_P#)TWP\_P"Q,\2_^EVA5ZK0
M 4444 %%%% !1110 5Y5^R=_R:S\&_\ L3-&_P#2&&O5:\J_9._Y-9^#?_8F
M:-_Z0PT >JT444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110!Y5
M\9/^2B? K_L<[G_U'M9KU6O*OC)_R43X%?\ 8YW/_J/:S7JM 'E7B/\ Y.F^
M'G_8F>)?_2[0J]5KRKQ'_P G3?#S_L3/$O\ Z7:%7JM 'E7B/_DZ;X>?]B9X
ME_\ 2[0J]5KRKQ'_ ,G3?#S_ +$SQ+_Z7:%7;>//!-A\1?"E]X=U6?4+?3;[
MRUN#I=_-93NBR*YC$T++(JN%V-M8$JS+GF@#2TW6M/UK35U#3[^UOK!MVVZM
MIEDB.TE6PRDC@@@\\$&L;4OB?X-T7P;!XNU#Q;H=AX4N$CDAUVYU*&.QD63'
MELL[,$(;(P0><\5\D^ ?$@T;]C7X7>%1IOB!=#UV*]M]4OO#FB7U^;2PBFF9
MX0+.&1HVG)CA!(0"-YG5PT:@L^ .L0ZK\-_V+?,66/2XHKB K?VTMN&OH]&N
M%B9!(J[_ )?M&QQE6!RA(.: /KGQ#\3O!WA'3=*U#7?%FAZ+8:LZ1Z?=:AJ4
M,$5XSC<BPL[ 2%AR I.1717%Q%:P23SR)##&I=Y)&"JJ@9))/0 =Z_/KX=O8
MGP?HZ>(FLO\ A&A\)/%ATM;@_P"CBQ.HKDQ[OE\O[&+3I_ !_#7N'Q>?68_^
M"?%\=5:1=5_X0FU&KF4L&VFWB%X'[_<\[.??- 'O7A?X@^%O''A]]=\.>)=(
M\0:)&SJ^I:7?Q7-LI09<&5&*@J.O/%/\'^.O#?Q#T<:OX5\0:7XFTHR-$+[1
M[V*[@WKC<N^-BN1D9&>,U\D?&IWCT+]K8Z2T"Z'_ &-HPN3;$B/)LL78;;Q_
MQY?9L_[&S/&*]E^$/E_\-#?&S^SO(_L?;H/_ !ZXV?:_L3;\XXW?9_L7_ ?+
M[8H ]NKRK]D[_DUGX-_]B9HW_I##78>.-0\8:?:VS>#]"T/7;EG(GCUS6IM,
M2-,<%&BM+DN<]BJ_4]*\$_9DU_XPP_LV_"B/3/ O@>[TU?"6DK:W%WXTO()I
M8A9Q;'>-=)<(Q7!*AW )(#-C) /J"BO*O^$C^-__ $3SX?\ _A>7W_RFH_X2
M/XW_ /1//A__ .%Y??\ RFH ]5HKRK_A(_C?_P!$\^'_ /X7E]_\IJ/^$C^-
M_P#T3SX?_P#A>7W_ ,IJ /5:*\J_X2/XW_\ 1//A_P#^%Y??_*:C_A(_C?\
M]$\^'_\ X7E]_P#*:@#U6BO*O^$C^-__ $3SX?\ _A>7W_RFH_X2/XW_ /1/
M/A__ .%Y??\ RFH ]5HKRK_A(_C?_P!$\^'_ /X7E]_\IJ/^$C^-_P#T3SX?
M_P#A>7W_ ,IJ /5:*\J_X2/XW_\ 1//A_P#^%Y??_*:C_A(_C?\ ]$\^'_\
MX7E]_P#*:@#U6BO*O^$C^-__ $3SX?\ _A>7W_RFH_X2/XW_ /1//A__ .%Y
M??\ RFH ]5HKRK_A(_C?_P!$\^'_ /X7E]_\IJ/^$C^-_P#T3SX?_P#A>7W_
M ,IJ /5:*\J_X2/XW_\ 1//A_P#^%Y??_*:C_A(_C?\ ]$\^'_\ X7E]_P#*
M:@#U6BO*O^$C^-__ $3SX?\ _A>7W_RFH_X2/XW_ /1//A__ .%Y??\ RFH
M]5HKRK_A(_C?_P!$\^'_ /X7E]_\IJ/^$C^-_P#T3SX?_P#A>7W_ ,IJ /5:
M*\J_X2/XW_\ 1//A_P#^%Y??_*:C_A(_C?\ ]$\^'_\ X7E]_P#*:@#U6BO*
MO^$C^-__ $3SX?\ _A>7W_RFH_X2/XW_ /1//A__ .%Y??\ RFH ]5HKRK_A
M(_C?_P!$\^'_ /X7E]_\IJ/^$C^-_P#T3SX?_P#A>7W_ ,IJ /5:*\J_X2/X
MW_\ 1//A_P#^%Y??_*:C_A(_C?\ ]$\^'_\ X7E]_P#*:@#U6BO*O^$C^-__
M $3SX?\ _A>7W_RFH_X2/XW_ /1//A__ .%Y??\ RFH ]5HKRK_A(_C?_P!$
M\^'_ /X7E]_\IJ/^$C^-_P#T3SX?_P#A>7W_ ,IJ /5:*\J_X2/XW_\ 1//A
M_P#^%Y??_*:C_A(_C?\ ]$\^'_\ X7E]_P#*:@#U6BO*O^$C^-__ $3SX?\
M_A>7W_RFH_X2/XW_ /1//A__ .%Y??\ RFH ]5HKRK_A(_C?_P!$\^'_ /X7
ME]_\IJ/^$C^-_P#T3SX?_P#A>7W_ ,IJ /5:*\J_X2/XW_\ 1//A_P#^%Y??
M_*:C_A(_C?\ ]$\^'_\ X7E]_P#*:@#U6BO*O^$C^-__ $3SX?\ _A>7W_RF
MH_X2/XW_ /1//A__ .%Y??\ RFH ]5HKRK_A(_C?_P!$\^'_ /X7E]_\IJ/^
M$C^-_P#T3SX?_P#A>7W_ ,IJ /5:*\J_X2/XW_\ 1//A_P#^%Y??_*:C_A(_
MC?\ ]$\^'_\ X7E]_P#*:@#U6BO*O^$C^-__ $3SX?\ _A>7W_RFH_X2/XW_
M /1//A__ .%Y??\ RFH ]5HKRK_A(_C?_P!$\^'_ /X7E]_\IJ/^$C^-_P#T
M3SX?_P#A>7W_ ,IJ /5:*\J_X2/XW_\ 1//A_P#^%Y??_*:C_A(_C?\ ]$\^
M'_\ X7E]_P#*:@#U6BO*O^$C^-__ $3SX?\ _A>7W_RFH_X2/XW_ /1//A__
M .%Y??\ RFH ]5HKRK_A(_C?_P!$\^'_ /X7E]_\IJ/^$C^-_P#T3SX?_P#A
M>7W_ ,IJ /5:*\J_X2/XW_\ 1//A_P#^%Y??_*:C_A(_C?\ ]$\^'_\ X7E]
M_P#*:@#U6BO*O^$C^-__ $3SX?\ _A>7W_RFH_X2/XW_ /1//A__ .%Y??\
MRFH ]5HKRK_A(_C?_P!$\^'_ /X7E]_\IJ/^$C^-_P#T3SX?_P#A>7W_ ,IJ
M /5:*\J_X2/XW_\ 1//A_P#^%Y??_*:C_A(_C?\ ]$\^'_\ X7E]_P#*:@#U
M6BO*O^$C^-__ $3SX?\ _A>7W_RFH_X2/XW_ /1//A__ .%Y??\ RFH ]5HK
MRK_A(_C?_P!$\^'_ /X7E]_\IJ/^$C^-_P#T3SX?_P#A>7W_ ,IJ /5:*\J_
MX2/XW_\ 1//A_P#^%Y??_*:C_A(_C?\ ]$\^'_\ X7E]_P#*:@#U6BO*O^$C
M^-__ $3SX?\ _A>7W_RFH_X2/XW_ /1//A__ .%Y??\ RFH ]5HKRK_A(_C?
M_P!$\^'_ /X7E]_\IJ/^$C^-_P#T3SX?_P#A>7W_ ,IJ /5:*\J_X2/XW_\
M1//A_P#^%Y??_*:C_A(_C?\ ]$\^'_\ X7E]_P#*:@#U6BO*O^$C^-__ $3S
MX?\ _A>7W_RFH_X2/XW_ /1//A__ .%Y??\ RFH ]5HKRK_A(_C?_P!$\^'_
M /X7E]_\IJ/^$C^-_P#T3SX?_P#A>7W_ ,IJ /5:*\J_X2/XW_\ 1//A_P#^
M%Y??_*:C_A(_C?\ ]$\^'_\ X7E]_P#*:@#U6BO*O^$C^-__ $3SX?\ _A>7
MW_RFH_X2/XW_ /1//A__ .%Y??\ RFH ]5HKRK_A(_C?_P!$\^'_ /X7E]_\
MIJ/^$C^-_P#T3SX?_P#A>7W_ ,IJ /5:*\J_X2/XW_\ 1//A_P#^%Y??_*:C
M_A(_C?\ ]$\^'_\ X7E]_P#*:@#U6BO*O^$C^-__ $3SX?\ _A>7W_RFH_X2
M/XW_ /1//A__ .%Y??\ RFH ]5HKRK_A(_C?_P!$\^'_ /X7E]_\IJ/^$C^-
M_P#T3SX?_P#A>7W_ ,IJ /5:*\J_X2/XW_\ 1//A_P#^%Y??_*:C_A(_C?\
M]$\^'_\ X7E]_P#*:@#U6BO*O^$C^-__ $3SX?\ _A>7W_RFH_X2/XW_ /1/
M/A__ .%Y??\ RFH ]5HKRK_A(_C?_P!$\^'_ /X7E]_\IJ/^$C^-_P#T3SX?
M_P#A>7W_ ,IJ /5:*\J_X2/XW_\ 1//A_P#^%Y??_*:C_A(_C?\ ]$\^'_\
MX7E]_P#*:@#U6BO*O^$C^-__ $3SX?\ _A>7W_RFH_X2/XW_ /1//A__ .%Y
M??\ RFH ]5HKRK_A(_C?_P!$\^'_ /X7E]_\IJ/^$C^-_P#T3SX?_P#A>7W_
M ,IJ /5:*\J_X2/XW_\ 1//A_P#^%Y??_*:C_A(_C?\ ]$\^'_\ X7E]_P#*
M:@ ^,G_)1/@5_P!CG<_^H]K->JU\Z^+M6^(M]\6O@?'XN\*^%]#TT>++IH[C
M1?$MSJ4S2_\ "/ZOA#')I]N NTL=V\D$ ;3DD?15 'E7B/\ Y.F^'G_8F>)?
M_2[0J]5KRKQ'_P G3?#S_L3/$O\ Z7:%7JM 'E7B/_DZ;X>?]B9XE_\ 2[0J
M]5KRKQ'_ ,G3?#S_ +$SQ+_Z7:%7JM &?H_A_2_#ND0Z5I6FV>F:7"I6.QLX
M$B@0$DD*B@* 22>!W-9.I?##P;K7@V#PCJ'A+0[_ ,*6Z1QPZ%<Z;#)8QK'C
MRU6!E* +@8 '&.*Z:B@#F?$/PQ\'>+M-TK3]=\)Z'K5AI+I)I]KJ&FPSQ6;(
M-J-"KJ1&5' *@8%:MWX<TF_U)=1NM+L[G4%M9;%;N:W1I1;R,C20AR,^6YCC
M++G!**2.!6C10!@>%_A]X6\#^'WT+PYX:TCP_HDC.SZ;I=A%;6S%QAR8D4*2
MPZ\<T_P?X&\-_#S1QI'A7P_I?AG2A(THL='LHK2#>V-S;(U"Y.!DXYQ6Y10
M5Y5^R=_R:S\&_P#L3-&_](8:]5KRK]D[_DUGX-_]B9HW_I##0!ZK1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110!!?7UOIMG-=74R6]M"I>260X55'4DUP'PM_:
M!\#_ !DN]4M?"^L)>7&G3M!+&PVLVW^-.?F7WKRG_@H7XSTKPS^S[>:?=ZK>
M6.K:M<)!IMKI[[9;J0?>5N_E@'+>^T=6%?)?[.?[#/QAN9KKQ%;ZU>?"W5K/
M'V-[B-UDG; .U@K A,'DD,.",&O>PN H5,+*O7J<CO9?UN_EL?38/+,/6P4L
M3B*O([VC?;3\7\MC]4**^*_^%G?M7? WY?%G@G3OBMHL/WM0T(XN64>@C4,.
M.[0?C76^ _\ @HQ\+?$EU_9WB0:IX#U=6\N2WUFU)B5_3S$SCZNJ5RRRVO;F
MIVFN\7?\-_P.*>4XGEYZ*52/>#YOPW_ ^IZ*R/#/B[0_&FFKJ'A_6;#6[%NE
MQI]RD\?_ 'TI(S6O7F-.+LSR)1<7:2LPHHHI$A1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110!Y5\9/^2B? K_L<[G_ -1[6:]5KRKX
MR?\ )1/@5_V.=S_ZCVLUZK0!Y5XC_P"3IOAY_P!B9XE_]+M"KU6O*O$?_)TW
MP\_[$SQ+_P"EVA5ZK0!Y5XC_ .3IOAY_V)GB7_TNT*O5:\J\1_\ )TWP\_[$
MSQ+_ .EVA5ZK0 4444 %%%% !1110 5Y5^R=_P FL_!O_L3-&_\ 2&&O5:\J
M_9._Y-9^#?\ V)FC?^D,- 'JM%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %8OC3QAI
M/P_\*ZIXCUV[6QTG38&N+B=NRCL!W8G  ')) '6MJOA+XJ:YJ'[<OQVB^&/A
MJYEA^%WA2X%QXAU6W?Y;R521M0C@\AD3WWOR%%=V$P_UB;<W:$=9/LO\WLCT
M<#A%BIMS=H1UD^R_S>R\RW^SUX,U;]K;XQW'QU\<V3Q>$]-E,'A+1;@[D'EM
MQ*1T(0@DG^*3/9 *^XJH:#H.G^%]%L=(TFSBL-,L85M[:UA7"11J,*H'L!5^
MEBL1]8G=*T5HEV7];BQN+>+J7BK0CI%=E_GW\PKD?'GPC\%_%"U\CQ7X7TO7
MEQM62\ME:5/]R3&Y?^ D5UU%<D92@^:+LSBA.5.7-!V?D?(7B;_@G'X8L=2;
M5_AGXP\0_#?6%YC:TNGGA7N #N64?C(?I61]I_:\^!G^MAT?XQ:%%_%& +P)
M^'ER%OPEK[4HKTUF5:2Y:Z51?WE=_?O^)[$<VKR7+B$JJ_O*[^_1_B?(OA/_
M (*/>#EU%=(^(OAG7OAOK*X$L=_:O-$G;G"K*.?6/\:^DO _Q1\(?$RS^U>%
M?$NF:_$!N86-TDCQ_P"^@.Y#[,!5WQ7X)\/>.M-.G^(]#T_7;(Y_<:C:I.@S
MW 8'!]QS7S=XY_X)R?#37+S^T_"=UJWP_P!81M\4^DW3/$C>NQR6'T1UIWP-
M;HZ;_P# E^C_ #'?+<1NI4G_ .!1_27YGU917Q6/ ?[6GP-Y\.^*]+^+>B0_
M=L]8.+HJ.N3(ROG'83-]/6[H_P#P40C\)7\>D_%WX;^(? .HD[?M"0-+ Y_O
M!7",%_W=])Y=4GKAY*HO)Z_<[,3RFM45\+*-5?W7K_X"[/\  ^QZ*\_^'/Q^
M^'?Q9C3_ (13Q?I>K3N,BT6;R[D#WA?;(/Q6O0*\V=.=-\LU9^9Y%2G.E+EJ
M1:?GH%%%%09A1110 4444 %%%% !1110 4444 %%%% !1110!Y5\9/\ DHGP
M*_['.Y_]1[6:]5KRKXR?\E$^!7_8YW/_ *CVLUZK0!Y5XC_Y.F^'G_8F>)?_
M $NT*O5:\J\1_P#)TWP\_P"Q,\2_^EVA5ZK0!Y5XC_Y.F^'G_8F>)?\ TNT*
MO4+JZAL;6:YN9H[>WA1I)9I6"HB@9+,3P  ,DFO+_$?_ "=-\//^Q,\2_P#I
M=H5=WXR\%:#\0_#MQH/B?1[/7M$N7B>?3M0A6:"8QR+*F]&X8!T0X((..0:
M.2F_:&\!+X3T#Q':ZO<ZSIFOM(-*&B:5>:C<WHC+"1X[>WB>9HUV\R!-@W+D
M_,N;%]\>/ ]EX$T+Q@-8DO\ 0M=E2#2VTRPN;VYO)65V\J.VAC>9I L<I9 F
MY/*DW!=C8^<?AC^T1HOP)_9)^%EK<ZCHMGXF\1_;+31H_$&HQV%B&2XE:6XN
M)W("0Q*RLVW+L65$!9Q5RV_X0WX3Z9^SSKUMXZTK7_ &DZMK(U/QHES!_9SW
MUY;W3/</*C&*%7N7G0#=A6E5,D]0#W;Q)^T=\._"OAGP_P"(;[Q#YFCZ]9/J
M=A=6%C<W@DLXT1Y;IQ#&YB@C62,O+(%1-Z[F7(KNM8\1:9X?\/7VNZC?06>C
M6-K)>W-]*X$44"(7>0MTVA03GT%? _AG6+7X7>$_#VN>,KDZ3H^O?#?Q';Z2
M;^$Q>=-/J7VN"S12,F>6WDBV08WOY1 4E2*]M^+&EWUC^Q(W@:YG6X\;6_@>
MWFGT>,K)>W,=K';B[*0 [G&3L.T$9D4=6&0#V+PU\;O!GBOPGKWB2SU:2UTG
M00[:L^K6-QITU@JP+.6FAN(XY(U\ETD!90"C!AD'-7_AY\4?#GQ2T^]N_#MW
M<S"QG%M=6]_I]Q87-O(8TE59(+B..5-T<D;J64!E=2,@YKY2\?7D?Q<\'_M0
M>*/!%XOBCPW?Z5I-O:76D*+F*]DM8&FNTA*9$I\N6.,A<X92GWE('KWP#\1:
M;\0/C+\7O&7AK5+;7/"-^-&LK34[!UEMKBXAMI'G,<B\/M$\*,1G#*RGYE8
M ]ZKRK]D[_DUGX-_]B9HW_I##78>.+#QAJ%K;+X/UW0]"N5<F>37-%FU-)$Q
MP$6*[MBASW+-]!UKP3]F30?C#-^S;\*)-,\=>![336\):2UK;W?@N\GFBB-G
M%L1Y%U9 [!< L$0$@D*N<  ^H**\J_X1SXW_ /10OA__ .$'??\ RYH_X1SX
MW_\ 10OA_P#^$'??_+F@#U6BO*O^$<^-_P#T4+X?_P#A!WW_ ,N:/^$<^-__
M $4+X?\ _A!WW_RYH ]5HKRK_A'/C?\ ]%"^'_\ X0=]_P#+FC_A'/C?_P!%
M"^'_ /X0=]_\N: /5:*\J_X1SXW_ /10OA__ .$'??\ RYH_X1SXW_\ 10OA
M_P#^$'??_+F@#U6BO*O^$<^-_P#T4+X?_P#A!WW_ ,N:/^$<^-__ $4+X?\
M_A!WW_RYH ]5HKRK_A'/C?\ ]%"^'_\ X0=]_P#+FC_A'/C?_P!%"^'_ /X0
M=]_\N: /5:*\J_X1SXW_ /10OA__ .$'??\ RYH_X1SXW_\ 10OA_P#^$'??
M_+F@#U6BO*O^$<^-_P#T4+X?_P#A!WW_ ,N:/^$<^-__ $4+X?\ _A!WW_RY
MH ]5HKRK_A'/C?\ ]%"^'_\ X0=]_P#+FC_A'/C?_P!%"^'_ /X0=]_\N: /
M5:*\J_X1SXW_ /10OA__ .$'??\ RYH_X1SXW_\ 10OA_P#^$'??_+F@#U6B
MO*O^$<^-_P#T4+X?_P#A!WW_ ,N:/^$<^-__ $4+X?\ _A!WW_RYH ]5HKRK
M_A'/C?\ ]%"^'_\ X0=]_P#+FC_A'/C?_P!%"^'_ /X0=]_\N: /5:*\J_X1
MSXW_ /10OA__ .$'??\ RYH_X1SXW_\ 10OA_P#^$'??_+F@#U6BO*O^$<^-
M_P#T4+X?_P#A!WW_ ,N:/^$<^-__ $4+X?\ _A!WW_RYH ]5HKRK_A'/C?\
M]%"^'_\ X0=]_P#+FC_A'/C?_P!%"^'_ /X0=]_\N: /5:*\J_X1SXW_ /10
MOA__ .$'??\ RYH_X1SXW_\ 10OA_P#^$'??_+F@#U6BO*O^$<^-_P#T4+X?
M_P#A!WW_ ,N:/^$<^-__ $4+X?\ _A!WW_RYH ]5HKRK_A'/C?\ ]%"^'_\
MX0=]_P#+FC_A'/C?_P!%"^'_ /X0=]_\N: /5:*\J_X1SXW_ /10OA__ .$'
M??\ RYH_X1SXW_\ 10OA_P#^$'??_+F@#U6BO*O^$<^-_P#T4+X?_P#A!WW_
M ,N:/^$<^-__ $4+X?\ _A!WW_RYH ]5HKRK_A'/C?\ ]%"^'_\ X0=]_P#+
MFC_A'/C?_P!%"^'_ /X0=]_\N: /5:*\J_X1SXW_ /10OA__ .$'??\ RYH_
MX1SXW_\ 10OA_P#^$'??_+F@#U6BO*O^$<^-_P#T4+X?_P#A!WW_ ,N:/^$<
M^-__ $4+X?\ _A!WW_RYH ]5HKRK_A'/C?\ ]%"^'_\ X0=]_P#+FC_A'/C?
M_P!%"^'_ /X0=]_\N: /5:*\J_X1SXW_ /10OA__ .$'??\ RYH_X1SXW_\
M10OA_P#^$'??_+F@#U6BO*O^$<^-_P#T4+X?_P#A!WW_ ,N:/^$<^-__ $4+
MX?\ _A!WW_RYH ]5HKRK_A'/C?\ ]%"^'_\ X0=]_P#+FC_A'/C?_P!%"^'_
M /X0=]_\N: /5:*\J_X1SXW_ /10OA__ .$'??\ RYH_X1SXW_\ 10OA_P#^
M$'??_+F@#U6BO*O^$<^-_P#T4+X?_P#A!WW_ ,N:/^$<^-__ $4+X?\ _A!W
MW_RYH ]5HKRK_A'/C?\ ]%"^'_\ X0=]_P#+FC_A'/C?_P!%"^'_ /X0=]_\
MN: /5:*\J_X1SXW_ /10OA__ .$'??\ RYH_X1SXW_\ 10OA_P#^$'??_+F@
M#U6BO*O^$<^-_P#T4+X?_P#A!WW_ ,N:/^$<^-__ $4+X?\ _A!WW_RYH ]5
MHKRK_A'/C?\ ]%"^'_\ X0=]_P#+FC_A'/C?_P!%"^'_ /X0=]_\N: /5:*\
MJ_X1SXW_ /10OA__ .$'??\ RYH_X1SXW_\ 10OA_P#^$'??_+F@#U6BO*O^
M$<^-_P#T4+X?_P#A!WW_ ,N:/^$<^-__ $4+X?\ _A!WW_RYH ]5HKRK_A'/
MC?\ ]%"^'_\ X0=]_P#+FC_A'/C?_P!%"^'_ /X0=]_\N: /5:*\J_X1SXW_
M /10OA__ .$'??\ RYH_X1SXW_\ 10OA_P#^$'??_+F@#U6BO*O^$<^-_P#T
M4+X?_P#A!WW_ ,N:/^$<^-__ $4+X?\ _A!WW_RYH ]5HKRK_A'/C?\ ]%"^
M'_\ X0=]_P#+FO+?VBOC!\4OV<?A_)XDU?QYX U&ZDE$%CI,?@J]BEO)3R5#
M'6&VJ!DLVTX'8D@'6G3G6FJ<%=LVHT9XBI&E35Y/1%;]M#XY:Q%<Z;\%OAWN
MN_B!XL @FD@DVFPMGSDEA]QF4,<_PH&;C*FO8_V>/@7H_P"S[\--/\,:8J37
M>!-J.H!<->7) WN?0#[JCLH'?)/SK^S+^S3\5]#N+OXJ:CXH\-6'CGQ7']HN
M4\2>&KG4[FTC=BVU7CO[<1EEV9382H55R,$5]!?\(Y\;_P#HH7P__P#"#OO_
M )<UZ.+J0I06$HN\5N_YI?Y+9?>>MCJT*,%@<.[QCK)_S2_R6R^\]5HKRK_A
M'/C?_P!%"^'_ /X0=]_\N:/^$<^-_P#T4+X?_P#A!WW_ ,N:\D\,]5HKRK_A
M'/C?_P!%"^'_ /X0=]_\N:/^$<^-_P#T4+X?_P#A!WW_ ,N: /5:*\J_X1SX
MW_\ 10OA_P#^$'??_+FC_A'/C?\ ]%"^'_\ X0=]_P#+F@#U6BO*O^$<^-__
M $4+X?\ _A!WW_RYH_X1SXW_ /10OA__ .$'??\ RYH ]5JEK&BZ?X@L)+'5
M+"UU*RDX>VO(5EC?ZJP(->;_ /".?&__ **%\/\ _P (.^_^7-'_  CGQO\
M^BA?#_\ \(.^_P#ES33:U0TVG='G_P 1?^">_P '_';O<V.D7'@_4B=RW7A^
M?R5##D?NF#1@9_NJI]ZX#_AG_P#:6^"/S?#KXHP^.=(B^[H_B08D*]D7S2X
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
MIOAY_P!B9XE_]+M"KU6@ HHHH **** "BBB@ KRK]D[_ )-9^#?_ &)FC?\
MI##7JM>5?LG?\FL_!O\ [$S1O_2&&@#U6BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ KY9_;0^/VJ
M^&X=-^%7P_W7OQ&\6$6RK;M^\L;=_E,F1]UF&<$_=4,_&!GU?]HKX[:1^SW\
M,]0\3:D8Y[W!ATW3V;#7ER1\J#N%'WF/90>^ ?(/V+_@7J]K-J7QF^(9-W\0
M?%P-Q&D\>UK"V?D *1\C,H7C^% J\?,*];"4X4H/%UE=+X5_-+_);O[CW,#1
MA1IO'8A7C'2*_FE_DMW]QZO^S5\ =*_9U^&=GX<LC'=:G)_I&J:BJX-U<$<D
M=]B_=4=@,]2<^KT45YU2I.M-U)N[9Y-:M.O4E5J.\GJPHHHK(Q"BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH \J^,G_)1/@5_P!CG<_^H]K->JUY5\9/^2B? K_L<[G_ -1[6:]5H \J
M\1_\G3?#S_L3/$O_ *7:%7JM>5>(_P#DZ;X>?]B9XE_]+M"KU6@#RKQ'_P G
M3?#S_L3/$O\ Z7:%7;>//&UA\._"E]X@U.#4+JTM?+7[/I5A->W4SR2+'''%
M#$K.[,[JHP,#.20 2.)\1_\ )TWP\_[$SQ+_ .EVA5ZK0!X/I'[3%]XN^'/P
MYUKP[X1CG\2^.KR>VT_0]4U7[-#;I"D\DLMQ<QPR[0J0=$C<EY$49&7%Q?VC
M;C7O OPZU+POX9CU#Q/XVN)+6UT35-1-G#9R0PS27?GW"1386(P/'E(V+.4P
M "6'G7@OX1^./AW\.?@5JA\)W&LZ]X(N]1&I^'[*]M5NFM[N.XCW0O),D#,K
M/"Q#2K\N_!W *;>@?!OQA\-?!?P3UF#PXWB+7O"=]J5[K.@Z7>P+,!J4=PTR
MV\D\D44ABFF0?,Z!D5B#G"D WK[]K&\U#PGX=U+PGX).N:I>^'K[Q-J>E7NJ
M"S;3[>S=(IX5D$4BRW!F9HT7Y$8QN6D08)]0\7?%W1O"OP;O_B0$FO\ 18-(
M_MB"*%<2W*-&'BC4'@,^Y5&> 6&2!7S7IWP,^(?PQ\+Z#>:5X27Q-K>H>"]8
MT'4M/L=2MXAI]_>WGVV-FDF=%>W226:-WCW/PK+&^<#U?XB?"'5=0_9G/PAT
M:S:ZN[?PI%96>K32QQV7VJT6%889/G\T&1DR&$;*%1]S [0P!9A_:-N/#_@_
MXE7_ (U\,QZ'K_@6WCNKS2M)U$ZA'=QRVXEM_(F:*$EG;?#AD4!T;DKACT_P
MI^)VJ^--4\3Z!XE\/VWAKQ3X>EMQ=V=CJ)U"V>&XA$L,L<QAA8_\M$8&-<-$
MV-R[6/CWB#X-^,/BYX2^.FJWGAQO"&N>,K'3[+2-&U>]@ED!L82\;3O;22QH
M'N))%&UF.Q58@$[1Z+\%O#GB"X^('Q#\?>(O#=SX0F\1_P!FV=KH]]=6]Q<I
M#:0,#)(UO))$-TL\P4*Y.U%)P6VJ >PUY5^R=_R:S\&_^Q,T;_TAAKL/''A/
M5/%EK;1:7XSUSP9)"Y9Y]#AL)'F!&-KB[MIU '7Y0I]Z\$_9D^$_BC4?V;?A
M1=V_QG\<:7;W'A+298[&TL]":&V5K.(B-#)ICN54':"[LV ,L3DT ?4%%>5?
M\*;\7?\ 1=?B!_X ^'O_ )54?\*;\7?]%U^('_@#X>_^55 'JM%>5?\ "F_%
MW_1=?B!_X ^'O_E51_PIOQ=_T77X@?\ @#X>_P#E50!ZK17E7_"F_%W_ $77
MX@?^ /A[_P"55'_"F_%W_1=?B!_X ^'O_E50!ZK17E7_  IOQ=_T77X@?^ /
MA[_Y54?\*;\7?]%U^('_ ( ^'O\ Y54 >JT5Y5_PIOQ=_P!%U^('_@#X>_\
ME51_PIOQ=_T77X@?^ /A[_Y54 >JT5Y5_P *;\7?]%U^('_@#X>_^55'_"F_
M%W_1=?B!_P" /A[_ .55 'JM%>5?\*;\7?\ 1=?B!_X ^'O_ )54?\*;\7?]
M%U^('_@#X>_^55 'JM%>5?\ "F_%W_1=?B!_X ^'O_E51_PIOQ=_T77X@?\
M@#X>_P#E50!ZK17E7_"F_%W_ $77X@?^ /A[_P"55'_"F_%W_1=?B!_X ^'O
M_E50!ZK17E7_  IOQ=_T77X@?^ /A[_Y54?\*;\7?]%U^('_ ( ^'O\ Y54
M>JT5Y5_PIOQ=_P!%U^('_@#X>_\ E51_PIOQ=_T77X@?^ /A[_Y54 >JT5Y5
M_P *;\7?]%U^('_@#X>_^55'_"F_%W_1=?B!_P" /A[_ .55 'JM%>5?\*;\
M7?\ 1=?B!_X ^'O_ )54?\*;\7?]%U^('_@#X>_^55 'JM%>5?\ "F_%W_1=
M?B!_X ^'O_E51_PIOQ=_T77X@?\ @#X>_P#E50!ZK17E7_"F_%W_ $77X@?^
M /A[_P"55'_"F_%W_1=?B!_X ^'O_E50!ZK17E7_  IOQ=_T77X@?^ /A[_Y
M54?\*;\7?]%U^('_ ( ^'O\ Y54 >JT5Y5_PIOQ=_P!%U^('_@#X>_\ E51_
MPIOQ=_T77X@?^ /A[_Y54 >JT5Y5_P *;\7?]%U^('_@#X>_^55'_"F_%W_1
M=?B!_P" /A[_ .55 'JM%>5?\*;\7?\ 1=?B!_X ^'O_ )54?\*;\7?]%U^(
M'_@#X>_^55 'JM%>5?\ "F_%W_1=?B!_X ^'O_E51_PIOQ=_T77X@?\ @#X>
M_P#E50!ZK17E7_"F_%W_ $77X@?^ /A[_P"55'_"F_%W_1=?B!_X ^'O_E50
M!ZK17E7_  IOQ=_T77X@?^ /A[_Y54?\*;\7?]%U^('_ ( ^'O\ Y54 >JT5
MY5_PIOQ=_P!%U^('_@#X>_\ E51_PIOQ=_T77X@?^ /A[_Y54 >JT5Y5_P *
M;\7?]%U^('_@#X>_^55'_"F_%W_1=?B!_P" /A[_ .55 'JM%>5?\*;\7?\
M1=?B!_X ^'O_ )54?\*;\7?]%U^('_@#X>_^55 'JM%>5?\ "F_%W_1=?B!_
MX ^'O_E51_PIOQ=_T77X@?\ @#X>_P#E50!ZK17E7_"F_%W_ $77X@?^ /A[
M_P"55'_"F_%W_1=?B!_X ^'O_E50!ZK17E7_  IOQ=_T77X@?^ /A[_Y54?\
M*;\7?]%U^('_ ( ^'O\ Y54 >JT5Y5_PIOQ=_P!%U^('_@#X>_\ E51_PIOQ
M=_T77X@?^ /A[_Y54 >JT5Y5_P *;\7?]%U^('_@#X>_^55'_"F_%W_1=?B!
M_P" /A[_ .55 'JM%>5?\*;\7?\ 1=?B!_X ^'O_ )54?\*;\7?]%U^('_@#
MX>_^55 'JM%>5?\ "F_%W_1=?B!_X ^'O_E51_PIOQ=_T77X@?\ @#X>_P#E
M50!ZK17E7_"F_%W_ $77X@?^ /A[_P"55'_"F_%W_1=?B!_X ^'O_E50!ZK1
M7E7_  IOQ=_T77X@?^ /A[_Y54?\*;\7?]%U^('_ ( ^'O\ Y54 >JT5Y5_P
MIOQ=_P!%U^('_@#X>_\ E51_PIOQ=_T77X@?^ /A[_Y54 >JT5Y5_P *;\7?
M]%U^('_@#X>_^55'_"F_%W_1=?B!_P" /A[_ .55 'JM9_B#7].\*Z'?:QJ]
MY%I^F6,+7%S=3-A(HU&68_A7G7_"F_%W_1=?B!_X ^'O_E57R#\2K?Q?^TA\
M;V^"7AOXG^)O%O@RQ99?%&J:I;:8D,+1ODK&UI9P%BI^4*Q8-)V 3=7;A</]
M8G9NT5JWV7];'H8'"/%U+2=H1UD^R_S[>9TWPGT'4?VXOCI)\4O$]K)!\,?"
MMPUOX=TFX3Y;R16!WN#P1D*[]B=B<A37W;7BGA3]G'5_ _AS3] T'XS>.M+T
M?3XA!:VD-CX?*QH.V3I1)/4DDDDDDDDYK6_X4WXN_P"BZ_$#_P  ?#W_ ,JJ
M>+Q'UB:Y5:$=(KLO\WNQX[%_6JB4%:$=(KLO\WN_,]5HKRK_ (4WXN_Z+K\0
M/_ 'P]_\JJ/^%-^+O^BZ_$#_ , ?#W_RJKA/./5:*\J_X4WXN_Z+K\0/_ 'P
M]_\ *JC_ (4WXN_Z+K\0/_ 'P]_\JJ /5:*\J_X4WXN_Z+K\0/\ P!\/?_*J
MC_A3?B[_ *+K\0/_  !\/?\ RJH ]5HKRK_A3?B[_HNOQ _\ ?#W_P JJ/\
MA3?B[_HNOQ _\ ?#W_RJH ]5HKRK_A3?B[_HNOQ _P# 'P]_\JJ/^%-^+O\
MHNOQ _\  'P]_P#*J@#U6BO*O^%-^+O^BZ_$#_P!\/?_ "JH_P"%-^+O^BZ_
M$#_P!\/?_*J@#U6BO*O^%-^+O^BZ_$#_ , ?#W_RJH_X4WXN_P"BZ_$#_P
M?#W_ ,JJ /5:*\J_X4WXN_Z+K\0/_ 'P]_\ *JC_ (4WXN_Z+K\0/_ 'P]_\
MJJ /5:*\J_X4WXN_Z+K\0/\ P!\/?_*JC_A3?B[_ *+K\0/_  !\/?\ RJH
M]5HKRK_A3?B[_HNOQ _\ ?#W_P JJ/\ A3?B[_HNOQ _\ ?#W_RJH ]5HKRK
M_A3?B[_HNOQ _P# 'P]_\JJ/^%-^+O\ HNOQ _\  'P]_P#*J@#U6BO*O^%-
M^+O^BZ_$#_P!\/?_ "JH_P"%-^+O^BZ_$#_P!\/?_*J@#U6BO*O^%-^+O^BZ
M_$#_ , ?#W_RJH_X4WXN_P"BZ_$#_P  ?#W_ ,JJ /5:*\J_X4WXN_Z+K\0/
M_ 'P]_\ *JC_ (4WXN_Z+K\0/_ 'P]_\JJ /5:*\J_X4WXN_Z+K\0/\ P!\/
M?_*JC_A3?B[_ *+K\0/_  !\/?\ RJH ]5HKRK_A3?B[_HNOQ _\ ?#W_P J
MJ/\ A3?B[_HNOQ _\ ?#W_RJH /C)_R43X%?]CG<_P#J/:S7JM?.OB[P#KOA
M7XM? ^[U/XD^*/&,#^++J);'6K;2HX48^']7(D!M+*!]P *X+E<,<J3@CZ*H
M \J\1_\ )TWP\_[$SQ+_ .EVA5ZK7E7B/_DZ;X>?]B9XE_\ 2[0J]5H \J\1
M_P#)TWP\_P"Q,\2_^EVA5ZK7E7B/_DZ;X>?]B9XE_P#2[0J]5H **** "BBB
M@ HHHH *\J_9._Y-9^#?_8F:-_Z0PUZK7E7[)W_)K/P;_P"Q,T;_ -(8: /5
M:*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHKSKX]?&S1/@%\-]0\5:TX=HQY5E9!L/>7)!V1+]<$D]E#'M6E.G
M*K)0@KMFM*G.M-4Z:NWHCRC]L[]H?4? &EV'P\\";[WXF^*BMM9P6OS2VD+D
MJ9O]EV.50GIAF_AY[S]EW]GO3OV=?AK!HT3+>:[>D76L:CCF>X(^Z#UV)DJO
MXGJQKR?]C'X*ZYJFJ7_QT^)7F7/COQ*&>Q@G7:+"T8 *54_=+)@*/X8P!_$P
MKZXKT\54C0A]3HNZ7Q/N_P#)=/O/8QM2&&I_4*#NEK-_S2[>D>GGJ%%%%>0>
M$%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% 'E7QD_Y*)\"O\ L<[G_P!1[6:]5KRKXR?\
ME$^!7_8YW/\ ZCVLUZK0!Y5XC_Y.F^'G_8F>)?\ TNT*O5:\J\1_\G3?#S_L
M3/$O_I=H5>JT >5>(_\ DZ;X>?\ 8F>)?_2[0J]5KRKQ'_R=-\//^Q,\2_\
MI=H5>JT %%%% !1110 4444 %>5?LG?\FL_!O_L3-&_](8:]5KRK]D[_ )-9
M^#?_ &)FC?\ I##0!ZK1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 4]8UBR\/Z3>:GJ5U'9:?9PO<7%S,VU(HU!+
M,Q[  $U\-^ =)OOV\OCQ+XYUVWN(O@_X1N##HFG3KM74)P0<NO?.%=_;8G/S
M&M/]I;QUK/[4'Q:MO@%X NY(M%M91-XNUB$9CC1&&Z+/<(<9'\4A5>-IKZ^\
M!>!=&^&G@_2O#'A^T%EI&FPB""+.3CJ68]V8DL3W))KVH_\ "?1Y_P#E[-:?
MW8]_5]/(^BC_ ,)>']I_R^J+3^[%]?673LC?HHHKQ3YT**** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@#RKXR?\E$^!7_8YW/_ *CVLUZK7E7QD_Y*)\"O^QSN?_4>
MUFO5: /*O$?_ "=-\//^Q,\2_P#I=H5>JUY5XC_Y.F^'G_8F>)?_ $NT*O5:
M /*O$?\ R=-\//\ L3/$O_I=H5>JUY5XC_Y.F^'G_8F>)?\ TNT*O5: /+OV
MAOB1KGPR\&Z9?Z&--LVO-7MK&]U[6X7FT[0[5RS2WMRB21EHU""/_61J&E1F
M8*K5YCHG[07Q$\>:5X)T/P_!X<L/&&OC6KN/6-0T^YFTN^T_3W2.*[MH!/'(
M([LW%K)&QE95C9V!E&TGT[XZ?#?7/''_  A6L>&SIUSK7A+7H];@TG6IY(+&
M_P#W,T#))*D<C1.JSM)'((WP\:C;@[E\JT?]G3XA>![[2_&WAYO"MSXY&H^(
M+NZT:ZO+BWTJWBU1H9#'!.MN\C&*6U@<EH5$IDG/[LL* -O_ (:&\2_$SPW\
M)$^'<6C:3X@\>:!<^)-WB"VEO;>T@@A@+P[(IH6+M-=0H'W@!5D.UC@5VND_
M'[3M0_9BB^,LEC)'IW_"+MXEET\2 NH6V,SPANA;(* XZ]JXG_AGCQ/\-/#W
MPC?X=3:+JNO> ] NO#9C\0W$ME!=PSPP!I_,BAF976:UA<)L(96<;E.#74:5
M\!38_L\#X*/+ WAK_A#CX<;6O,)N6F>!H'D^S[ H7!\P-YN=QQM&-Q //[S]
MI3QQX#T3Q3I7BV'PYJ'C6'2M"U+1Y-+M9K:Q9M6NFL88IHWGD=Q#<H2[JZ[X
MR,*AS7K'P7^(&N>*;[QOX;\4MIT_B;PAK"Z;=WFDVSVUK=QRVL%W!*D+RRM&
M?+N%5E,C?-&Q!P0!Y+??LU^.O'FA^*=4\5S^&].\;3:7H.FZ/'IES/=6*MI-
MVU]%+,[P1.GG7+LK*JMY<8&&D.17K7P7^'^N>%K[QOXD\4KIT'B;Q?K"ZE=V
M>DW+W-K:1Q6L%I!$DSQ1-(?+MU9F,:_,[ # !(!Z97E7[)W_ ":S\&_^Q,T;
M_P!(8:[#QQ\/=+^(-K;6^J76N6L=NYD1M#U^_P!)<DC'SO:31,X]F) ZXKP3
M]F3]GSPOK7[-OPHU"XU3QQ'<7?A+29Y$M/'VNVT*L]G$Q"11WJI&N3PB*%48
M    H ^H**\J_P"&:?"/_07^('_AQO$/_P G4?\ #-/A'_H+_$#_ ,.-XA_^
M3J /5:*\J_X9I\(_]!?X@?\ AQO$/_R=1_PS3X1_Z"_Q _\ #C>(?_DZ@#U6
MBO*O^&:?"/\ T%_B!_X<;Q#_ /)U'_#-/A'_ *"_Q _\.-XA_P#DZ@#U6BO*
MO^&:?"/_ $%_B!_X<;Q#_P#)U'_#-/A'_H+_ ! _\.-XA_\ DZ@#U6BO*O\
MAFGPC_T%_B!_X<;Q#_\ )U'_  S3X1_Z"_Q _P##C>(?_DZ@#U6BO*O^&:?"
M/_07^('_ (<;Q#_\G4?\,T^$?^@O\0/_  XWB'_Y.H ]5HKRK_AFGPC_ -!?
MX@?^'&\0_P#R=1_PS3X1_P"@O\0/_#C>(?\ Y.H ]5HKRK_AFGPC_P!!?X@?
M^'&\0_\ R=1_PS3X1_Z"_P 0/_#C>(?_ ).H ]5HKRK_ (9I\(_]!?X@?^'&
M\0__ "=1_P ,T^$?^@O\0/\ PXWB'_Y.H ]5HKRK_AFGPC_T%_B!_P"'&\0_
M_)U'_#-/A'_H+_$#_P .-XA_^3J /5:*\J_X9I\(_P#07^('_AQO$/\ \G4?
M\,T^$?\ H+_$#_PXWB'_ .3J /5:*\J_X9I\(_\ 07^('_AQO$/_ ,G4?\,T
M^$?^@O\ $#_PXWB'_P"3J /5:*\J_P"&:?"/_07^('_AQO$/_P G4?\ #-/A
M'_H+_$#_ ,.-XA_^3J /5:*\J_X9I\(_]!?X@?\ AQO$/_R=1_PS3X1_Z"_Q
M _\ #C>(?_DZ@#U6BO*O^&:?"/\ T%_B!_X<;Q#_ /)U'_#-/A'_ *"_Q _\
M.-XA_P#DZ@#U6BO*O^&:?"/_ $%_B!_X<;Q#_P#)U'_#-/A'_H+_ ! _\.-X
MA_\ DZ@#U6BO*O\ AFGPC_T%_B!_X<;Q#_\ )U'_  S3X1_Z"_Q _P##C>(?
M_DZ@#U6BO*O^&:?"/_07^('_ (<;Q#_\G4?\,T^$?^@O\0/_  XWB'_Y.H ]
M5HKRK_AFGPC_ -!?X@?^'&\0_P#R=1_PS3X1_P"@O\0/_#C>(?\ Y.H ]5HK
MRK_AFGPC_P!!?X@?^'&\0_\ R=1_PS3X1_Z"_P 0/_#C>(?_ ).H ]5HKRK_
M (9I\(_]!?X@?^'&\0__ "=1_P ,T^$?^@O\0/\ PXWB'_Y.H ]5HKRK_AFG
MPC_T%_B!_P"'&\0__)U'_#-/A'_H+_$#_P .-XA_^3J /5:*\J_X9I\(_P#0
M7^('_AQO$/\ \G4?\,T^$?\ H+_$#_PXWB'_ .3J /5:*\J_X9I\(_\ 07^(
M'_AQO$/_ ,G4?\,T^$?^@O\ $#_PXWB'_P"3J /5:*\J_P"&:?"/_07^('_A
MQO$/_P G4?\ #-/A'_H+_$#_ ,.-XA_^3J /5:*\J_X9I\(_]!?X@?\ AQO$
M/_R=1_PS3X1_Z"_Q _\ #C>(?_DZ@#U6BO*O^&:?"/\ T%_B!_X<;Q#_ /)U
M'_#-/A'_ *"_Q _\.-XA_P#DZ@#U6BO*O^&:?"/_ $%_B!_X<;Q#_P#)U'_#
M-/A'_H+_ ! _\.-XA_\ DZ@#U6BO*O\ AFGPC_T%_B!_X<;Q#_\ )U'_  S3
MX1_Z"_Q _P##C>(?_DZ@#U6BO*O^&:?"/_07^('_ (<;Q#_\G4?\,T^$?^@O
M\0/_  XWB'_Y.H ]5HKRK_AFGPC_ -!?X@?^'&\0_P#R=1_PS3X1_P"@O\0/
M_#C>(?\ Y.H ]5HKRK_AFGPC_P!!?X@?^'&\0_\ R=1_PS3X1_Z"_P 0/_#C
M>(?_ ).H ]5HKRK_ (9I\(_]!?X@?^'&\0__ "=1_P ,T^$?^@O\0/\ PXWB
M'_Y.H ]5HKRK_AFGPC_T%_B!_P"'&\0__)U'_#-/A'_H+_$#_P .-XA_^3J
M/5:^;OVROVB;SX5^'['P;X.66]^)?BK%KI=M:C=);H[;#/C^]G*IG^+)Z(:7
MXV>"_AM\"OAUJ?B[7M:^(+6]J D%JGQ(\0B2ZG;/EPI_IW4D=>P#$\ UY#^R
M3^R;)\1+*7XJ_%*?Q')K6JL)=!C7Q)J4-[96A!"N;I9Q<'<C;5#2']V 3G=Q
MZN$I0A%XJNO=CLOYI=O1;L]K T:=.#QN(5X1V7\TNB]%N_(^@_V4?V=;/]GK
MX=I:3E;OQ7JFVZUO4=V\RS8)\M6/)1,D#U)9OXJ]KKRK_AFGPC_T%_B!_P"'
M&\0__)U'_#-/A'_H+_$#_P .-XA_^3JX*U6=>HZE1W;/,KUZF)JRK57>3/5:
M*\J_X9I\(_\ 07^('_AQO$/_ ,G4?\,T^$?^@O\ $#_PXWB'_P"3JQ,#U6BO
M*O\ AFGPC_T%_B!_X<;Q#_\ )U'_  S3X1_Z"_Q _P##C>(?_DZ@#U6BO*O^
M&:?"/_07^('_ (<;Q#_\G4?\,T^$?^@O\0/_  XWB'_Y.H ]5HKRK_AFGPC_
M -!?X@?^'&\0_P#R=1_PS3X1_P"@O\0/_#C>(?\ Y.H ]5HKRK_AFGPC_P!!
M?X@?^'&\0_\ R=1_PS3X1_Z"_P 0/_#C>(?_ ).H ]5HKRK_ (9I\(_]!?X@
M?^'&\0__ "=1_P ,T^$?^@O\0/\ PXWB'_Y.H ]5HKRK_AFGPC_T%_B!_P"'
M&\0__)U'_#-/A'_H+_$#_P .-XA_^3J /5:*\J_X9I\(_P#07^('_AQO$/\
M\G4?\,T^$?\ H+_$#_PXWB'_ .3J /5:*\J_X9I\(_\ 07^('_AQO$/_ ,G4
M?\,T^$?^@O\ $#_PXWB'_P"3J /5:*\J_P"&:?"/_07^('_AQO$/_P G4?\
M#-/A'_H+_$#_ ,.-XA_^3J /5:*\J_X9I\(_]!?X@?\ AQO$/_R=1_PS3X1_
MZ"_Q _\ #C>(?_DZ@#U6BO*O^&:?"/\ T%_B!_X<;Q#_ /)U'_#-/A'_ *"_
MQ _\.-XA_P#DZ@#U6BO*O^&:?"/_ $%_B!_X<;Q#_P#)U'_#-/A'_H+_ ! _
M\.-XA_\ DZ@#U6BO*O\ AFGPC_T%_B!_X<;Q#_\ )U'_  S3X1_Z"_Q _P##
MC>(?_DZ@#U6BO*O^&:?"/_07^('_ (<;Q#_\G4?\,T^$?^@O\0/_  XWB'_Y
M.H ]5HKRK_AFGPC_ -!?X@?^'&\0_P#R=1_PS3X1_P"@O\0/_#C>(?\ Y.H
M]5HKRK_AFGPC_P!!?X@?^'&\0_\ R=1_PS3X1_Z"_P 0/_#C>(?_ ).H ]5H
MKRK_ (9I\(_]!?X@?^'&\0__ "=1_P ,T^$?^@O\0/\ PXWB'_Y.H /C)_R4
M3X%?]CG<_P#J/:S7JM?.OB[X0Z%X!^+7P/U#3+_Q1=7$GBRZ@9-:\6:KJL(4
M^']78D17=S*BME1\X4, 2 <,0?HJ@#RKQ'_R=-\//^Q,\2_^EVA5ZK7E7B/_
M ).F^'G_ &)GB7_TNT*O5: /*O$?_)TWP\_[$SQ+_P"EVA5ZK7E7B/\ Y.F^
M'G_8F>)?_2[0J]5H **** "BBB@ HHHH *\J_9._Y-9^#?\ V)FC?^D,->JU
MY5^R=_R:S\&_^Q,T;_TAAH ]5HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ JOJ%_;:58W-[>3QVMI;1M--/*P5(T4$LS$]  "2
M?:K%?%/[5'Q"US]H3XFVO[/7P[N&1"XF\5:O&<QV\*D%H21V7(+#^)RB?WA7
M9A<.\34Y;V2U;[+N=^"PKQ=7DO:*UD^R6[_KJ87ANQN_V_OCVWB/4H)D^"G@
MZ<PV-G-E5U.X&#EE[[OE9O[J;%ZL37WC'&L4:HBA$4855&  .@ KF_AO\.]#
M^%'@G2O"WAVT%II6GQ".-?XG;JTCGN[,2Q/J:Z:KQ>(5>2C35H1TBOU]7U-,
M=BUB)J%)6IPTBO+N_-[L****X#S HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@#RKXR?\E$^!7_ &.=S_ZCVLUZK7E7QD_Y*)\"O^QSN?\ U'M9KU6@#RKQ
M'_R=-\//^Q,\2_\ I=H5>JUY5XC_ .3IOAY_V)GB7_TNT*O5: /*O$?_ "=-
M\//^Q,\2_P#I=H5>JUY5XC_Y.F^'G_8F>)?_ $NT*O5: "BBB@ HHHH ****
M "O*OV3O^36?@W_V)FC?^D,->JUY5^R=_P FL_!O_L3-&_\ 2&&@#U6BBB@
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
M (9/^"'_ $1OX?\ _A+V/_QJC_AD_P""'_1&_A__ .$O8_\ QJ@#U6BO*O\
MAD_X(?\ 1&_A_P#^$O8__&J/^&3_ ((?]$;^'_\ X2]C_P#&J /5:*\J_P"&
M3_@A_P!$;^'_ /X2]C_\:H_X9/\ @A_T1OX?_P#A+V/_ ,:H ]5HKRK_ (9/
M^"'_ $1OX?\ _A+V/_QJC_AD_P""'_1&_A__ .$O8_\ QJ@#U6BO*O\ AD_X
M(?\ 1&_A_P#^$O8__&J/^&3_ ((?]$;^'_\ X2]C_P#&J /5:*\J_P"&3_@A
M_P!$;^'_ /X2]C_\:H_X9/\ @A_T1OX?_P#A+V/_ ,:H ]5HKRK_ (9/^"'_
M $1OX?\ _A+V/_QJC_AD_P""'_1&_A__ .$O8_\ QJ@#U6BO*O\ AD_X(?\
M1&_A_P#^$O8__&J/^&3_ ((?]$;^'_\ X2]C_P#&J /5:*\J_P"&3_@A_P!$
M;^'_ /X2]C_\:H_X9/\ @A_T1OX?_P#A+V/_ ,:H ]5HKRK_ (9/^"'_ $1O
MX?\ _A+V/_QJC_AD_P""'_1&_A__ .$O8_\ QJ@#U6BO*O\ AD_X(?\ 1&_A
M_P#^$O8__&J/^&3_ ((?]$;^'_\ X2]C_P#&J /5:*\J_P"&3_@A_P!$;^'_
M /X2]C_\:H_X9/\ @A_T1OX?_P#A+V/_ ,:H ]5HKRK_ (9/^"'_ $1OX?\
M_A+V/_QJC_AD_P""'_1&_A__ .$O8_\ QJ@#U6BO*O\ AD_X(?\ 1&_A_P#^
M$O8__&J/^&3_ ((?]$;^'_\ X2]C_P#&J /5:*\J_P"&3_@A_P!$;^'_ /X2
M]C_\:H_X9/\ @A_T1OX?_P#A+V/_ ,:H ]5HKRK_ (9/^"'_ $1OX?\ _A+V
M/_QJC_AD_P""'_1&_A__ .$O8_\ QJ@#U6BO*O\ AD_X(?\ 1&_A_P#^$O8_
M_&J/^&3_ ((?]$;^'_\ X2]C_P#&J /5:*\J_P"&3_@A_P!$;^'_ /X2]C_\
M:H_X9/\ @A_T1OX?_P#A+V/_ ,:H ]5HKRK_ (9/^"'_ $1OX?\ _A+V/_QJ
MC_AD_P""'_1&_A__ .$O8_\ QJ@#U6BO*O\ AD_X(?\ 1&_A_P#^$O8__&J/
M^&3_ ((?]$;^'_\ X2]C_P#&J /5:*\J_P"&3_@A_P!$;^'_ /X2]C_\:H_X
M9/\ @A_T1OX?_P#A+V/_ ,:H ]5HKRK_ (9/^"'_ $1OX?\ _A+V/_QJC_AD
M_P""'_1&_A__ .$O8_\ QJ@#U6BO*O\ AD_X(?\ 1&_A_P#^$O8__&J/^&3_
M ((?]$;^'_\ X2]C_P#&J /5:*\J_P"&3_@A_P!$;^'_ /X2]C_\:H_X9/\
M@A_T1OX?_P#A+V/_ ,:H ]5HKRK_ (9/^"'_ $1OX?\ _A+V/_QJC_AD_P""
M'_1&_A__ .$O8_\ QJ@#U6BO*O\ AD_X(?\ 1&_A_P#^$O8__&J/^&3_ ((?
M]$;^'_\ X2]C_P#&J /4+JZALK:6XN)8X+>%#))+*P5$4#)8D\  <Y-?"%JE
MU_P4"^/WVJ1)(_@IX(N=J1L2JZM<=>1_M@ GNL>!PTE<[^TU\.OA]\0/BMH_
MP-^$'PS\$Z3XCDE6YUSQ%IOA^TB?3(U(8H)(XPRD##/@@\H@Y8BOJ[PQ^QO\
M%_#WAS3-+N/AEX2UZ:SMUA?4M8T*UNKJX8#EY)'C+$DY/7 S@8  KVJ?^P4?
M:O\ B37N^2[^KZ?>?0TO^$O#JN_XTU[O]V/\WJ]E]Y[)!!':P1PPQK##&H1(
MXU"JJ@8  '0 5)7E7_#)_P $/^B-_#__ ,)>Q_\ C5'_  R?\$/^B-_#_P#\
M)>Q_^-5XI\\>JT5Y5_PR?\$/^B-_#_\ \)>Q_P#C5'_#)_P0_P"B-_#_ /\
M"7L?_C5 'JM%>5?\,G_!#_HC?P__ /"7L?\ XU1_PR?\$/\ HC?P_P#_  E[
M'_XU0!ZK17E7_#)_P0_Z(W\/_P#PE['_ .-4?\,G_!#_ *(W\/\ _P )>Q_^
M-4 >JT5Y5_PR?\$/^B-_#_\ \)>Q_P#C5'_#)_P0_P"B-_#_ /\ "7L?_C5
M'JM%>5?\,G_!#_HC?P__ /"7L?\ XU1_PR?\$/\ HC?P_P#_  E['_XU0!ZK
M17E7_#)_P0_Z(W\/_P#PE['_ .-4?\,G_!#_ *(W\/\ _P )>Q_^-4 >JT5Y
M5_PR?\$/^B-_#_\ \)>Q_P#C5'_#)_P0_P"B-_#_ /\ "7L?_C5 'JM%>5?\
M,G_!#_HC?P__ /"7L?\ XU1_PR?\$/\ HC?P_P#_  E['_XU0!ZK17E7_#)_
MP0_Z(W\/_P#PE['_ .-4?\,G_!#_ *(W\/\ _P )>Q_^-4 >JT5Y5_PR?\$/
M^B-_#_\ \)>Q_P#C5'_#)_P0_P"B-_#_ /\ "7L?_C5 'JM%>5?\,G_!#_HC
M?P__ /"7L?\ XU1_PR?\$/\ HC?P_P#_  E['_XU0!ZK17E7_#)_P0_Z(W\/
M_P#PE['_ .-4?\,G_!#_ *(W\/\ _P )>Q_^-4 >JT5Y5_PR?\$/^B-_#_\
M\)>Q_P#C5'_#)_P0_P"B-_#_ /\ "7L?_C5 'JM%>5?\,G_!#_HC?P__ /"7
ML?\ XU1_PR?\$/\ HC?P_P#_  E['_XU0!ZK17E7_#)_P0_Z(W\/_P#PE['_
M .-4?\,G_!#_ *(W\/\ _P )>Q_^-4 >JT5Y5_PR?\$/^B-_#_\ \)>Q_P#C
M5'_#)_P0_P"B-_#_ /\ "7L?_C5 'JM%>5?\,G_!#_HC?P__ /"7L?\ XU1_
MPR?\$/\ HC?P_P#_  E['_XU0!ZK17E7_#)_P0_Z(W\/_P#PE['_ .-4?\,G
M_!#_ *(W\/\ _P )>Q_^-4 >JT5Y5_PR?\$/^B-_#_\ \)>Q_P#C5'_#)_P0
M_P"B-_#_ /\ "7L?_C5 'JM%>5?\,G_!#_HC?P__ /"7L?\ XU1_PR?\$/\
MHC?P_P#_  E['_XU0 ?&3_DHGP*_['.Y_P#4>UFO5:^=?%WP1^'7PU^+7P/U
M/PCX!\+^%=2E\675M)>:+HUM9S/$?#^KL8R\:*2I9%.W.,J#V%?15 'E7B/_
M ).F^'G_ &)GB7_TNT*O5:\J\1_\G3?#S_L3/$O_ *7:%7JM 'E7B/\ Y.F^
M'G_8F>)?_2[0J]5KRKQ'_P G3?#S_L3/$O\ Z7:%7JM !1110 4444 %%%%
M!7E7[)W_ ":S\&_^Q,T;_P!(8:]5KRK]D[_DUGX-_P#8F:-_Z0PT >JT444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %>!?M??M(#X#>!HK3156
M_P#'>O-]DT73T7S'#$[3.4'4*2 !_$Q4=,XS_P!L7]JZW_9S\-PVFGQ+=>*]
M2B9[*.128XUSM\QNQP<\>U?/_P"PS>1_M)?'7Q'\4/'NHIJWB_28(TTS3?(V
MP6L>-OFJ,;05SA0/XG=CS@U[F$P+C2>-KK]W'IW?3Y7W9])@<N<:+S'$QO2C
MT_F?1>E]V?1O['_[.!^!?@F?4-=<7_CWQ"WVS6;Z0[W1F.X0!^X4DEC_ !.2
M>0%Q] 445Y5:M/$5'5J/5GAXC$5,55E6JN[84445@<X4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% 'E7QD_Y*)\"O^QSN?\ U'M9KU6O*OC)
M_P E$^!7_8YW/_J/:S7JM 'E7B/_ ).F^'G_ &)GB7_TNT*O5:\J\1_\G3?#
MS_L3/$O_ *7:%7JM 'E7B/\ Y.F^'G_8F>)?_2[0J]5KRKQ'_P G3?#S_L3/
M$O\ Z7:%7JM !1110 4444 %%%% !7E7[)W_ ":S\&_^Q,T;_P!(8:]5KRK]
MD[_DUGX-_P#8F:-_Z0PT >JT444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M7SU\>OVUO!/P8N)-#L/,\9>-F;R8=!TEMY24X 69P#L.3]T!G_V>];T:%3$3
MY*4;LZ</AJV*G[.C'F?]?<>^:EJ5IH]C/>W]U#8V4"&2:XN9!''&HZLS$@ >
MYKY&^(G[<E_XR\12>"?@%X<F\=>(W^1]9>(BQMLY!<9QN /\;E4SC[X-<_IO
M[//Q?_:TU"#6_C;K4W@_P>KB6U\&:4?+D89R/,7D*<?Q/O?J,)7US\.OAAX6
M^$WAV'0_"6BVNBZ=&!E(%^>5A_%(YRTC?[3$FO1Y,-@_C_>3[+X5ZOK\M/,]
M;V>#R_\ B-5:G9? O5_:]%IYGRAHW_!/:_\ B/;W_B#XS^.-0\1^-;^ I$;2
M3-M8$C@#(&_:?X5"(.>#UKZ1^!GP)\.? /P;#H6@Q>9)@&YOI$ EN'QRQ]![
M9XS7H]%<U?'8C$1Y)R]WMLON./$9EBL5'V=2?N]EHEZ)!1117 >8%%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 >5?&3_DHGP*_['.Y
M_P#4>UFO5:\J^,G_ "43X%?]CG<_^H]K->JT >5>(_\ DZ;X>?\ 8F>)?_2[
M0J]5KRKQ'_R=-\//^Q,\2_\ I=H5>JT >5>(_P#DZ;X>?]B9XE_]+M"KU6O*
MO$?_ "=-\//^Q,\2_P#I=H5>JT <=\4/&5UX3T&W@TA(;CQ/K%RFF:-;39*/
M<N"?,<#DQQ1K)/)CGRX7QS@5\H_"?4O$GQ3\)_ [P+XA\9>)W75M+\3ZIJ>N
M:?JUQ8WUY/9WD=M;[KB&19-J_:V?RPVW,<0(*C%?7?C?X:^$?B98V]EXP\*Z
M)XKL[>3SH;?7-.AO(XGP1O5958!L$C(YP:\ITO\ 8T\%^%?!.@>'_".I:QX)
MN-%FOI;?6]!%G%>NMX"MRDF^W:)PRB)03'O46\.U@4S0!YOX5\;:_P#M">'?
MV=M$UO6];T5?%?@V_P#$6K7F@7\^ESW%Y!#9PQD2V[HX3=>22F,':2L>00,5
MW6@?&[Q%-^P3'\5IMLOBN'P%)KC2&(;7NX[)I/,*=-I==Q'3!KL_%/[.F@:U
MX<\(Z5HFJZQX&?PI9OINDZAX=DA6X@LW@$,EO^_BE1D94C))3<&B1E8$9KI+
M/X5:'8^$5\(1K+_PA2Z&OA]?#A$?V46P0QD[@OF[C&=A_>8P,X#98@'RAXL\
M4>(_A#;>+?!&E>*/$NH6VJ:#X0N4U74]4N+V]LI]3U633+V6*XE=GB+1HLB*
MI"I)DH%S7O'[/E]>:;XK^+/@B74-2U32_"GB&"WTRYU>]FO;E;>YTZTNS$]Q
M,[R2[))Y<%V)"E5S@"DTS]E3PY;^$?$NB:MK_B+Q+<ZY:6=@^MZI<6XO[2"S
M^:R2%X88T'D2%I59D9B[$N7Z5W'PS^&5G\,]/U6.+4]0U[5-7OWU+4]9U;R?
MM5[<,B1AG$,<<8"QQQ1JJ(H"QKQG)(!<\<?$+2_A]:VUQJEKKEU'<.8T70]
MO]6<$#/SI:0RL@]V !Z9KP3]F3]H/POHO[-OPHT^XTKQQ)<6GA+28)'M/ .N
MW,+,MG$I*2QV3)(N1PZ,588()!!KZ@KRK]D[_DUGX-_]B9HW_I##0 ?\-+>$
M?^@1\0/_  W/B'_Y!H_X:6\(_P#0(^('_AN?$/\ \@UZK10!Y5_PTMX1_P"@
M1\0/_#<^(?\ Y!H_X:6\(_\ 0(^('_AN?$/_ ,@UZK10!Y5_PTMX1_Z!'Q _
M\-SXA_\ D&C_ (:6\(_] CX@?^&Y\0__ "#7JM% 'E7_  TMX1_Z!'Q _P##
M<^(?_D&C_AI;PC_T"/B!_P"&Y\0__(->JT4 >5?\-+>$?^@1\0/_  W/B'_Y
M!H_X:6\(_P#0(^('_AN?$/\ \@UZK10!Y5_PTMX1_P"@1\0/_#<^(?\ Y!H_
MX:6\(_\ 0(^('_AN?$/_ ,@UZK10!Y5_PTMX1_Z!'Q _\-SXA_\ D&C_ (:6
M\(_] CX@?^&Y\0__ "#7JM% 'E7_  TMX1_Z!'Q _P##<^(?_D&C_AI;PC_T
M"/B!_P"&Y\0__(->JT4 >5?\-+>$?^@1\0/_  W/B'_Y!H_X:6\(_P#0(^('
M_AN?$/\ \@UZK10!Y5_PTMX1_P"@1\0/_#<^(?\ Y!H_X:6\(_\ 0(^('_AN
M?$/_ ,@UZK10!Y5_PTMX1_Z!'Q _\-SXA_\ D&C_ (:6\(_] CX@?^&Y\0__
M "#7JM% 'E7_  TMX1_Z!'Q _P##<^(?_D&C_AI;PC_T"/B!_P"&Y\0__(->
MJT4 >5?\-+>$?^@1\0/_  W/B'_Y!H_X:6\(_P#0(^('_AN?$/\ \@UZK10!
MY5_PTMX1_P"@1\0/_#<^(?\ Y!H_X:6\(_\ 0(^('_AN?$/_ ,@UZK10!Y5_
MPTMX1_Z!'Q _\-SXA_\ D&C_ (:6\(_] CX@?^&Y\0__ "#7JM% 'E7_  TM
MX1_Z!'Q _P##<^(?_D&C_AI;PC_T"/B!_P"&Y\0__(->JT4 >5?\-+>$?^@1
M\0/_  W/B'_Y!H_X:6\(_P#0(^('_AN?$/\ \@UZK10!Y5_PTMX1_P"@1\0/
M_#<^(?\ Y!H_X:6\(_\ 0(^('_AN?$/_ ,@UZK10!Y5_PTMX1_Z!'Q _\-SX
MA_\ D&C_ (:6\(_] CX@?^&Y\0__ "#7JM% 'E7_  TMX1_Z!'Q _P##<^(?
M_D&C_AI;PC_T"/B!_P"&Y\0__(->JT4 >5?\-+>$?^@1\0/_  W/B'_Y!H_X
M:6\(_P#0(^('_AN?$/\ \@UZK10!Y5_PTMX1_P"@1\0/_#<^(?\ Y!H_X:6\
M(_\ 0(^('_AN?$/_ ,@UZK10!Y5_PTMX1_Z!'Q _\-SXA_\ D&C_ (:6\(_]
M CX@?^&Y\0__ "#7JM% 'E7_  TMX1_Z!'Q _P##<^(?_D&C_AI;PC_T"/B!
M_P"&Y\0__(->JT4 >5?\-+>$?^@1\0/_  W/B'_Y!H_X:6\(_P#0(^('_AN?
M$/\ \@UZK10!Y5_PTMX1_P"@1\0/_#<^(?\ Y!H_X:6\(_\ 0(^('_AN?$/_
M ,@UZK10!Y5_PTMX1_Z!'Q _\-SXA_\ D&C_ (:6\(_] CX@?^&Y\0__ "#7
MJM% 'E7_  TMX1_Z!'Q _P##<^(?_D&C_AI;PC_T"/B!_P"&Y\0__(->JUF^
M(O$FE>$=&NM6UO4;;2M,M4WS7=Y*L<<8]2Q.*:3;LAI.3LMSSS_AI;PC_P!
MCX@?^&Y\0_\ R#7->,/VWOA5X#C4:]=>)M'N9(VDM[75/!^KV#W&WJ(S<6L:
M$]N6 ]Z\I\9?MG^+OC)X@N?!W[._AJ?6KI3Y=QXKOH=EK; G&]%?Y0/1I>3@
MX1N*Z7X0?L(Z3I&N_P#"8_%;5Y/B9XWF82N]^S264#YR-J/S)CMO&T=D&*]:
M.#AAUSXR5O[J^)_Y?/[CW8Y?3PJ53,)<O:"^)^O\J]=?(\0\=_M(?%O]I:^A
MTWP]I'BKX9?#.]0DZ[IWA?5-5N+N+D']Y9V\G7^XI4=07->O_ 70_@E^S];I
M-HOA?X@:CXA9-LVO:C\./$$ET^1\P0_8,1J?10..I;K7US'&D,:QQHJ1J JJ
MHP !T %.K*MC93C[*DN2'9=?5[LPQ&8SJ0]A0C[.GV77_$]W\]/(\J_X:6\(
M_P#0(^('_AN?$/\ \@T?\-+>$?\ H$?$#_PW/B'_ .0:]5HKS3R#RK_AI;PC
M_P! CX@?^&Y\0_\ R#1_PTMX1_Z!'Q _\-SXA_\ D&O5:* /*O\ AI;PC_T"
M/B!_X;GQ#_\ (-'_  TMX1_Z!'Q _P##<^(?_D&O5:* /*O^&EO"/_0(^('_
M (;GQ#_\@T?\-+>$?^@1\0/_  W/B'_Y!KU6B@#RK_AI;PC_ - CX@?^&Y\0
M_P#R#1_PTMX1_P"@1\0/_#<^(?\ Y!KU6B@#RK_AI;PC_P! CX@?^&Y\0_\
MR#1_PTMX1_Z!'Q _\-SXA_\ D&O5:* /*O\ AI;PC_T"/B!_X;GQ#_\ (-'_
M  TMX1_Z!'Q _P##<^(?_D&O5:* /*O^&EO"/_0(^('_ (;GQ#_\@T?\-+>$
M?^@1\0/_  W/B'_Y!KU6B@#RK_AI;PC_ - CX@?^&Y\0_P#R#1_PTMX1_P"@
M1\0/_#<^(?\ Y!KU6B@#RK_AI;PC_P! CX@?^&Y\0_\ R#1_PTMX1_Z!'Q _
M\-SXA_\ D&O5:* /*O\ AI;PC_T"/B!_X;GQ#_\ (-'_  TMX1_Z!'Q _P##
M<^(?_D&O5:* /*O^&EO"/_0(^('_ (;GQ#_\@T?\-+>$?^@1\0/_  W/B'_Y
M!KU6B@#RK_AI;PC_ - CX@?^&Y\0_P#R#1_PTMX1_P"@1\0/_#<^(?\ Y!KU
M6B@#RK_AI;PC_P! CX@?^&Y\0_\ R#1_PTMX1_Z!'Q _\-SXA_\ D&O5:* /
M*O\ AI;PC_T"/B!_X;GQ#_\ (-'_  TMX1_Z!'Q _P##<^(?_D&O5:* /*O^
M&EO"/_0(^('_ (;GQ#_\@T?\-+>$?^@1\0/_  W/B'_Y!KU6B@#RK_AI;PC_
M - CX@?^&Y\0_P#R#1_PTMX1_P"@1\0/_#<^(?\ Y!KU6B@#RK_AI;PC_P!
MCX@?^&Y\0_\ R#1_PTMX1_Z!'Q _\-SXA_\ D&O5:* /*O\ AI;PC_T"/B!_
MX;GQ#_\ (-'_  TMX1_Z!'Q _P##<^(?_D&O5:* /*O^&EO"/_0(^('_ (;G
MQ#_\@T?\-+>$?^@1\0/_  W/B'_Y!KU6B@#RK_AI;PC_ - CX@?^&Y\0_P#R
M#1_PTMX1_P"@1\0/_#<^(?\ Y!KU6B@#RK_AI;PC_P! CX@?^&Y\0_\ R#1_
MPTMX1_Z!'Q _\-SXA_\ D&O5:* /*O\ AI;PC_T"/B!_X;GQ#_\ (-'_  TM
MX1_Z!'Q _P##<^(?_D&O5:* /*O^&EO"/_0(^('_ (;GQ#_\@T?\-+>$?^@1
M\0/_  W/B'_Y!KU6B@#YU\7?%[0O'WQ:^!^GZ98>*+6XC\674[/K7A/5=*A*
MCP_JZD"6[MHD9LL/D#%B 2!A21]%5Y5\9/\ DHGP*_['.Y_]1[6:]5H \J\1
M_P#)TWP\_P"Q,\2_^EVA5ZK7E7B/_DZ;X>?]B9XE_P#2[0J]5H \J\1_\G3?
M#S_L3/$O_I=H5>JUY5XC_P"3IOAY_P!B9XE_]+M"KU6@ HHHH **** "BBB@
M KRK]D[_ )-9^#?_ &)FC?\ I##7JM>5?LG?\FL_!O\ [$S1O_2&&@#U6BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
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
M)%!(CL]+N%W'T!D1!^.<5UQP6*J?#2E]S.Z&78RI\%&3_P"W6>B?\+D\7?\
M1"OB!_X'>'O_ ):T?\+D\7?]$*^('_@=X>_^6M? Y_X*4^+O^%S-KXB?_A"\
M>0-#XSY><[^N-_X].]?3EA_P4T^#5U&AF?7K)B 2LVG;MI]/E<UW5LGQE&WN
M7OVUL>CB,@S"AR_N^:ZZ:V\F>N?\+D\7?]$*^('_ ('>'O\ Y:T?\+D\7?\
M1"OB!_X'>'O_ ):UY_:?\%%/@5<8\SQ3=VO_ %VTFZ/_ *#&:VK3]N[X$WN/
M+^(%LN?^>UA=Q_\ H40KB>!Q<=Z4ON9Y\LLQT=Z$O_ 7_D=-_P +D\7?]$*^
M('_@=X>_^6M'_"Y/%W_1"OB!_P"!WA[_ .6M4K3]L'X+WN/+^(^AKG_GM.8_
M_0@*VK3]I/X37V/*^)GA(D]%?6K9#^1<5D\-7CO!_<S"6#Q,?BIR7R92_P"%
MR>+O^B%?$#_P.\/?_+6C_A<GB[_HA7Q _P# [P]_\M:Z>T^+_@._Q]E\;>';
MG/3R=5@;^3UM6GBG1=0Q]EU>PN<]/)N4;^1K%TYQW1A*G./Q1://O^%R>+O^
MB%?$#_P.\/?_ "UH_P"%R>+O^B%?$#_P.\/?_+6O5%8,H*D$'H12U!F>5?\
M"Y/%W_1"OB!_X'>'O_EK1_PN3Q=_T0KX@?\ @=X>_P#EK7JM% 'E7_"Y/%W_
M $0KX@?^!WA[_P"6M'_"Y/%W_1"OB!_X'>'O_EK7JM% 'E7_  N3Q=_T0KX@
M?^!WA[_Y:T?\+D\7?]$*^('_ ('>'O\ Y:UZK10!Y5_PN3Q=_P!$*^('_@=X
M>_\ EK1_PN3Q=_T0KX@?^!WA[_Y:UZK10!Y5_P +D\7?]$*^('_@=X>_^6M'
M_"Y/%W_1"OB!_P"!WA[_ .6M>JURGQ(^*7A7X1^'9=;\6ZW:Z+IZ [6G;YY6
M'\,:#+2-_LJ":J,93:C%7;+A"522A!7;.5_X7)XN_P"B%?$#_P #O#W_ ,M:
M\O\ B=^WYH/PBU(:5XG^'7B[2M:DC+164EWHT[;L?*)!;:A,\8;L2GT!K@M0
M_: ^,7[6]_-HWP6T:;P7X+#F*Y\9:I^[E<!L'RF&0AQ_#'N?H2R5[!\ _P!B
MSP/\$[B/6[I7\7^-2WG2Z_JR[V64DDM"A)$9)/WB6?K\W:O6^JTL+[V+>O\
M*M_F^GYGN?4J&"]['R][^2.__;SVC^+/FKQE9_M&?M4W=E-XF\%>*/#WPONA
MYHT?PO/IT-S*G995O+NW=\CG<X*C@A*^A?A'80? W0AI?A#]F_QSIRL!Y]VU
M]X>DN;D^LDIU7<WT^Z.P%?25%<U?&5*T?9Q7+#^5;?/N_-G)B<PJXB/LHI0I
MK:*V^?=^;/*O^%R>+O\ HA7Q _\  [P]_P#+6C_A<GB[_HA7Q _\#O#W_P M
M:]5HK@/+/*O^%R>+O^B%?$#_ ,#O#W_RUH_X7)XN_P"B%?$#_P #O#W_ ,M:
M]5HH \J_X7)XN_Z(5\0/_ [P]_\ +6C_ (7)XN_Z(5\0/_ [P]_\M:]5HH \
MJ_X7)XN_Z(5\0/\ P.\/?_+6C_A<GB[_ *(5\0/_  .\/?\ RUKU6B@#RK_A
M<GB[_HA7Q _\#O#W_P M:/\ A<GB[_HA7Q _\#O#W_RUKU6B@#RK_A<GB[_H
MA7Q _P# [P]_\M:/^%R>+O\ HA7Q _\  [P]_P#+6O5:* /*O^%R>+O^B%?$
M#_P.\/?_ "UH_P"%R>+O^B%?$#_P.\/?_+6O5:* /*O^%R>+O^B%?$#_ ,#O
M#W_RUH_X7)XN_P"B%?$#_P #O#W_ ,M:]5HH \J_X7)XN_Z(5\0/_ [P]_\
M+6C_ (7)XN_Z(5\0/_ [P]_\M:]5I&8*I9C@#DDT >5_\+D\7?\ 1"OB!_X'
M>'O_ ):T?\+D\7?]$*^('_@=X>_^6M=7K7Q6\$^&]W]K^,= TK;U^VZG!#C_
M +Z85P6M?MF_ [0-WVGXH^&Y=O7[%>K=?^BMV:]2AE688K_=\/.?I&3_ "1#
MJ0CNS2_X7)XN_P"B%?$#_P #O#W_ ,M:/^%R>+O^B%?$#_P.\/?_ "UKS#6O
M^"F'[/VD[A#XNNM5=>JV6D77\WC4'\ZXB^_X*S?"QYC;Z)X7\9:[<_PK#8P(
MK?G,6_\ ':^BH\$\28A7C@*B_P 47'_TJQB\317VD?0W_"Y/%W_1"OB!_P"!
MWA[_ .6M'_"Y/%W_ $0KX@?^!WA[_P"6M?.'_#Q;QWK_ !X3_9J\::T&^[+)
MYRJ/<[+9Q^M+_P -+_M=>)O^1?\ V>;'3=WW?[:N&7'UWS0_TKJ_U&SBG_O/
MLJ2_OUJ2_P#;[_@+ZS3Z7?R9]'?\+D\7?]$*^('_ ('>'O\ Y:T?\+D\7?\
M1"OB!_X'>'O_ ):U\X_:_P!N[Q5_RY>!_!V[_:ADV_\ CT_]:3_AGS]LGQ-_
MR'OCWHNE*W5='ML%1Z?);1?S_&C_ %3HT]<1FF&CZ3E-_P#DD&OQ#V[>T&?1
M_P#PN3Q=_P!$*^('_@=X>_\ EK4=Q\;?%%G"TL_P/\>0Q+U>34/#JJ/Q.K5\
MZ_\ #OOXH^(.?%/[3WC"_1OO6UL+A4'TW71'_CM/A_X)/_#J\D%QXE\<^-->
MF7DM)>P(I^NZ)C_X]1_8O#E/^+F]_P#!1F__ $IP%[2MTI_BCU76OVT]'\-[
MO[6\$:QIA7J+SQ-X5B/_ (]K K@M:_X*C?#70=WVGPOXEEV]?L6H:#=?^BM3
M;-7-,_X)P?LW:#C[?IDVI%>O]H:],F?KY;I76Z9^S#^S#X7QL\*>"QM_Z"%R
MES^?G2-FH<>#*&DZV(J/RC3@OQE-_@0ZE7KRKYGS?\8O^"N7AW5OA]J5E\-O
M#_B32O%EP!'!?:]:6H@MU/WG'EW$A+@?=!7&>O3!^5?A!^WS\7/AW\0;'6M9
M\8ZQXJT8SJ=0TG4[EIXY82?G$88XC;&<%<#.,\5^AG[1^G_LSZ'\)[G2;SP_
MX>DLM1G6U5/ ]O8+?6TFUW68!63"J4P3DC+ 8YKY _9=^#/P&_X7/I3:]X@U
M_4H$N'FLH-<LK2QL$,:-(IN)1<N6SLP % +$#O7Z5P[Q=X=Y;EF(P>(HOGE?
M2HE.<]-$IQBE&WGRV>J;9E4PN+J\E6,X\KO;WDOAUEHW?1'THW_!8'X0+T\)
M^/&^EC8__)E26G_!7?X37LFR/PAXZ4^LT&F1#\VOA7TO-H_P:\2?ZVQ\"ZIN
M_OPV4V?S!JA-^S9\#O$/(^&W@>Y+?Q6VD6JL?Q10:_-5BN#:V]#$1_PU:<OS
MIHUC*J_AG%_UZGC6G_\ !3KX<ZECR?#/B!,_\_&K>'H?_0]4%=+I_P"WMX2U
M7 M/#-]<,?X4\6>%"WY?VSFNEU#]A7X"ZEGSOAEHZ9_Y]S+#_P"@.*YK4/\
M@FS^SS?9*^!9+1C_ !6^L7H_0S$?I5\G!L]JF)C_ -NTI?\ MT33_:.R_$Z7
M3_VJFU;'V'X8^)KS/3[/KWAB3/Y:O6_#\:O%5Q&'B^!OCV1#T9+_ ,.D'\?[
M6KQ;4/\ @E7\"[S/DVWB"PS_ ,^^J$X_[[5JP)O^"2?PM@D,FE^+O&VFR^JW
MMLP'Y6X/ZT?V;PK4^#,:D/\ %0O_ .DU YZZ^POO_P" ?1?_  N3Q=_T0KX@
M?^!WA[_Y:T?\+D\7?]$*^('_ ('>'O\ Y:U\X_\ #LFYTW_D!_'7QQI6/N_O
M2V/^^)$H_P"&"?C+I7.D?M5^+PH^[#=)=%1_Y.$?^.T?V'P_+X,XBO\ %1JK
M\E(/:5>M/\4?1W_"Y/%W_1"OB!_X'>'O_EK1_P +D\7?]$*^('_@=X>_^6M?
M./\ PRS^U;I'_(+_ &CH[O'3^T+=S^>Y)*/^%5_MSZ/_ ,>_Q=\&:M$.B36L
M88_B; ?^A4?ZKX.I_!S;#OU=2/YTP]O);TW^'^9]'?\ "Y/%W_1"OB!_X'>'
MO_EK1_PN3Q=_T0KX@?\ @=X>_P#EK7SCO_;NT;_EGX'UW'_7)-WZQT?\+:_;
MET?_ (^O@[X.U2(=7M[J,,?P%_\ ^RT?ZG5)?P\?AI?]QHK_ -*Y0^L+K"7W
M'T=_PN3Q=_T0KX@?^!WA[_Y:T?\ "Y/%W_1"OB!_X'>'O_EK7SC_ ,-6?M4:
M1_R%/V;OM>.O]GSR'\MIDH_X;Z^,&E\:Q^RKXQC4=9K=KHK_ .D9'_CU'^HV
M<2_@^RG_ (:]%_\ MZ#ZU3ZW7R?^1]'?\+D\7?\ 1"OB!_X'>'O_ ):T?\+D
M\7?]$*^('_@=X>_^6M?./_#SMM-_Y#GP/\<:5C[W[K=C_OM$J2W_ ."MWPHC
MD$6I>%?&NFR]P]C;,!_Y, _I2_U!XEWC@W+_  N,O_29,/K5'^8^BO\ A<GB
M[_HA7Q _\#O#W_RUH_X7)XN_Z(5\0/\ P.\/?_+6O#X_^"JWP.ELYI1-K\4R
MQLR03::078#(7*LP&3QGI7QCKW_!5+XT7OC:75-,N=+T[01,6BT)K"*5/+SP
MKRD>83CJ0PY[5ZN5>&7$N:2G'V'LN5;U+QOY+1W?X+JS.IC:,+:W]#]/O^%R
M>+O^B%?$#_P.\/?_ "UH_P"%R>+O^B%?$#_P.\/?_+6M?X"_%BU^.7P@\,>.
M;2V-G'K%KYCVY.[RI4=HY4![@.C@'N!7?5^:8G#U<'7GAJZM.#<6NS3LU]YV
MQDI)-=3RK_A<GB[_ *(5\0/_  .\/?\ RUH_X7)XN_Z(5\0/_ [P]_\ +6O5
M:*YAGE7_  N3Q=_T0KX@?^!WA[_Y:T?\+D\7?]$*^('_ ('>'O\ Y:UZK10!
MY5_PN3Q=_P!$*^('_@=X>_\ EK1_PN3Q=_T0KX@?^!WA[_Y:UZK10!\Z^+O'
MVN^*OBU\#[34_AMXH\'0)XLNI5OM:N=*DA=AX?U<","TO9WW$,6R4"X4Y8'
M/T57E7QD_P"2B? K_L<[G_U'M9KU6@#RKQ'_ ,G3?#S_ +$SQ+_Z7:%7JM>5
M>(_^3IOAY_V)GB7_ -+M"KU6@#RKQ'_R=-\//^Q,\2_^EVA5ZK7E7B/_ ).F
M^'G_ &)GB7_TNT*O5: "BBB@ HHHH **** "O*OV3O\ DUGX-_\ 8F:-_P"D
M,->JUY5^R=_R:S\&_P#L3-&_](8: /5:*** "BBB@ HHHH ***_.+_@L5JUW
MI^F_"R&V=HDN&U02.O!P!:<9]\_I7OY!D];B#,Z.64)*,JCM=[))-M_<G9=7
MH5&5*-Y5FU%)O17=[.RM=;NRO?3?6UC]':*_ /\ 9>^.'C?X'_%:RUCP18R:
M[JEW&]B^B^4\POD?!\O8GS$[E5AMYRH[9K["UK]N[]JRZ#+;_!S^R5[,/#M^
MSC\7<C]*_1L]\,,QR?%*C3Q%.<&KJ4IPIO\ \!E*_P U=?/0X:.+H58W<N7U
M3_1,_3JBOR&UO]KW]K_4MP_L_6-+C/5+;PY&G_CS0EA^=<!K7QN_:DUG=]KU
M?QM"&ZBWFGM1^496OGUP75C_ !L=AH^M>G_\D=BK8+[==+_MV7^2/VXK%UCQ
MIX>\/;O[5U[3-,V]?MEY'%C_ +Z85^$NMW7QBU_=_:L?B"_W?>^WW4TN?^^G
MK.T_1_%=@H%SX+LKS'4W1N%S_P!\3+5?ZJ8"'\7.,*O^XU/_ .3-/KF305YX
MB3](?YR1^VFL?M1_"'0]WVOXD^&2R]5M]2BG8?A&6-<1K'_!0#X%:1N \:&^
MD'\%GIMT_P#X]Y87]:_**PU[Q!I1!A^&_A-&];F&ZN/TEN&'Z5TVG_&_XB:+
M@V'A#X>:>XZ2+X5LV<?\">-C^M2\AR2G\6;8=_\ <:/Z1D9RSGA^GNZDO_ 5
M_F?H%J?_  4_^$UK)Y5AIGBC5Y2<(+:PB4$_\#E4_I5'_AX5K>M?\BM\"/&6
MO;ON?*ZY_P"_<,E?&-E^V1^T1I4>S3?$>@Z0G3;9Z%91C\O(J0_MF_M,71Q/
M\3H85_Z8Z/8__(XK/^SN'X;YGA?G6J/_ -)I'.^*<@INRHM^L_\ *Q]E?\-.
M_M*>(O\ D!?L^-IV[[O]L32#'UWF'^E'_"0?MJ>)>GAKP=X5#="9(GV_^1IJ
M^-1^U1\>KO\ X^?C%J,.>OD:3:_T5:>/V@?BU=_\?/QW\40^ODZ7%_244>RX
M?A_S-<(O_!TO_;"EQ?EJ_A4::]7?\Y'V/_PI_P#; \2<ZK\8/#VCPM_RSTZW
M7>OXK:K_ .A&C_AB?XN>(.?$7[2/B5D;[UO8K.$/_DPH_P#':^/%^+'CJ\_X
M^?VCO'L&>ODZ8?Z7@J5?%VL7G_'U^U/\4H,]?)TZ;^FI"G[7A^'_ #/,/'_#
M2J/_ -QE_P"N,5_"=./I[-?F?7Z?\$RO">K,'\3?$'QCKSYR2;F),G_@:2']
M:Z?1_P#@FW\$M-V_:=*U75L=?MFJ2+G_ +];*^($GTVZ_P"/W]J/XK3>N[3Y
MQ_/4&JQ'H/P]N_\ C^_:.^*$V>NZRE_^2&H>)X>>CXBC\J55?HA2XOKS5OK*
M7I4BOR9^AVC_ +%?P1T/;]G^'>ER;>GVQI;G_P!&NV:[73/@O\.?#$9DL/ W
MAC3$C&XR0Z3;Q;0.I+!/U-?F+'\._@;=_P#']\>_B3+Z[K1__LJI>+/@S^SJ
MWA'7)M+^+_CK4_$$=C.^GVM[ RPS7(C8Q(Y\CA6?:#R.">1UK"W"M2253/[W
M_P"G4OUFCCEQ ZSM/$1?K57^9[MK?[3'[)/AW]H-]9.GZA=:M;G[(VI65@CZ
M0CAN9 NX,2#_ !*I7'3UK[4AM_A[XFTNUU)+?PYJ-A>1+/!<-% Z2QL,JP)'
M((-?SQ3:7=V]X;5[>03YQLVG)^E?7?PS^$O[,L?@'19?'6L>-I_%SP[]1AT<
M1K;)(6)"IOCSPNT$Y.2#7Z?QGPOPAP_A<+B*F:2ASJR^&JYJU^9)2A9>:;6J
M1R+/:DVO;U5MI>5M/*^Y^H^H>!?@Q<9^W>'O DOK]HLK(_S6N9U#X6_LWS9^
MTZ!\.8?79'9P_P#H.*^ ?^$%_8[MO^7#XEW7_;:W'_LPI?\ A'_V/(5^7PC\
M1K@_]-+N%1^DU?E'US@NG_S-JS]*2_\ EIK_ *P*GMB(K_N)_D?:VH?!G]E&
M;/VFU\!P^NS5XX?_ $&45S.H? ;]C23)FOO!MNWJGC%X\?@+K%?)#V/[*RG%
MI\*_&%]Z>?K;1Y_[Y<T^'3?V?I#BT_9X\07_ *;O$UZ,_P#?(-6LZX,AMF6)
M?I3C_P#+#>/$U>UX8K_R>1]':A^S]^Q:V<>./#-F?2'QM$3^33-7,ZA^SM^Q
MHV=OQ;L[;_KW\56C_P U:O++?PG\)[A<V7[)&NW1[,?$>K./R"5;3X>^&Y1_
MH'['.I'T,EQK$P_D*U7$?!\=L9C'_P!PX?\ R;-X\68J/_,5_P"G'^46=3/\
M ?V2;!BUA\?[RR;_ *9ZW:/_ .@P"J,WP_\ @)IO_(._:NU:QQTVW3/C_OC;
M6.GPQO)#_H?[(MI%Z?:K+57_ /0I15ZW^#OC&X'^C?LJ^$XAV,^FW6?_ !^Z
M_I5_ZS\)=*F,E_VY3_5,W_ULQC_YB+_]PZC_ #IC9F\ Z;_R#OVW=>L\= L-
M^_\ Z!.*I3?$NQTG_CS_ &V]0N<=/M&EZF_]7K;C^ /Q-N/^/?\ 9N\#6_IN
MTV#_ -J7!J=?V9?C--_JO@;\/[0>ITG1V_\ 0W:C_6?A3_GSBY?]N4?_ )!@
MN*,;+JG_ -P9?_('(R_M,:[I/_'E^UW8W1'3[1X>U%L_G9/5.3]N#XE:6?\
M1_VC/#.I1CHK^'+D$_GI@_G7HD/[)_QOF_YIU\.;(>_AW021^(@8U;C_ &-?
MC;<==&\ V?\ N:3IT>/^^+:C_6?A+_H7XJ7K[%?^XRO]8\0_BHQ?_<#_ #Y3
MRS_AY%\4=-_YJ'X8U3'_ %!)US_Y+I4D?_!5KXGV/4^%=1Q_>TRY&?RD6O6(
M_P!AGXUW'74_!EG_ +B+'C_OBUJS#^P'\8I#F7QSH5O[6]W<@?D(5J7Q1PKT
MR>N_6=-?E 3X@<M\*_E1BO\ W*CR^U_X*]^/H\?:?"WAF;U\FWN8_P"<[5L6
MO_!8C78\?:? &FS>ODW<D?\ ,-7H\/\ P3Y^)LG^O^)5FG^Y)<M_/%6D_P""
M<WC"X_X^?BB@]=MK,_\ .05C+B;AM_#D55^M>*_*!A+-IU-L*_\ P"*_]SGQ
M1^T)^WC\2OCAXL@O[+5KSP;H]D5:RTO1[MXQ&X_Y:/(N"[Y[G@= *O\ P9_:
M"\!:QXFG\2_M!1>-/B5J]N52PMH'CGM=@'_+422HW! PJ_*>=P-3_%+]BOX@
M6WCK6K6T\*>*-22VO)81J=KH=Q+#>JKE1,I (PX ;[QZU]$?LZ_\$XD\3?#N
MWU+6=;USPEJLDTD=UIE_HS12 J?E8&1E+*5*G(7&21V-?I68>('!57A^CA<O
MR^4JZ23IK]W*'\UZ_*U+UCS.6[2Z>'A<VQM/%36'<E+5-*VWE>7+_P" R?JS
MT#3_ /@K!\)-*L8++3_ GC*TLX%$<5O;Z?:1QQJ.BJJW& /85,?^"MGPW_A\
M#^-F_P"W2V_^/UJ0_P#!,GPTO^N\;ZQ)_N6T2_S)K0@_X)F^!%QYWBGQ')_U
MS:!?YQFORG^W\E>O]A2^>+?_ ,J-95LQ>L:=_5Q7ZLYAO^"MGP__ (? 7C0_
M6WMQ_P"UJB;_ (*W^ QT\ >,3]8K<?\ M2NYC_X)I_#%?OZYXK<_]?=L!_Z3
MU:C_ .";_P *X_O7WB63_>O8?Z0BG_;V3_\ 0C_\NI?_ "HB-3-9?\NXK_M[
M_P"U/-V_X*Z>!EZ?#[Q9^*P#_P!GJ%O^"O'@I>GP\\4?BT _]FKUN'_@G;\)
M(L;DUR;_ ']0']$%:%O^P!\&X<;]%OY_^NFI3#_T$BJ_MS*/^A(O_"JI_P#*
MS2V:O^1?]O/_ .0/$&_X*]>#_P"'X<^)3]981_6F-_P5Z\+?P_#7Q&?K/%_A
M7OZ?L'_!5>OA29O][5+K_P".5.G[#/P27KX+W?[VJ7G_ ,>JO[;RC_H31_\
M"FK_ /(&L:>8_;G#Y7?Z(^=F_P""O7AS^'X8^(#];J,?^RU&W_!7K0_X?A;K
MQ^MY'_\ $5])K^Q#\$TZ>"(_QU&\/\YJL1_L7_!>/IX&M3_O7=R?YR5?]MY/
M_P!":/\ X45?_D3IC1Q+^*JE_P!NW_5'S"W_  5ZTG^'X4:X?K?H/_:=,;_@
MKU8?P_"363]=17_XS7U0G['OP<CZ>!+'\99C_P"SU83]DKX0Q]/ FF_B9#_[
M-5?VWDW_ $)X?^#ZQTQP\G\6(:_[AI_^WH^2V_X*]6W\/P@U8_75 /\ VA4;
M?\%>A_!\&]4;ZZOC_P!MZ^OD_97^$L?3P'I/XQL?ZU.O[,?PI3IX"T3\;8'^
M=5_;>3?]">'_ (.K?_)'3'"T?M8N7_@F/_RT^-F_X*\W/\'P4U!OKK1'_MK3
M#_P5WU'^'X'WQ_[CK?\ R'7VDO[-OPL3IX T#\;%#_,5.O[//PP3I\/O#?XZ
M9"?YK5?VYDO_ $)Z?_@VM_\ )'1'#X-?%B:C_P"X<%_[>S\OOVC?^"FGQ'^)
MFE1Z'X<T63X8V$L8-P\-V\U],<MG;,4CV(1CA5W9!^;!P.8^!7_!1+XT?#>&
M?2!=Q>/4G7_1X_$CRSR0$<DK('5B,9X9C[8K[E_:2_X)N^&/CMXDL=4T/6++
MX?16MDMK]DTS1$='<22,9&VRQ@DAU7IGY!SV%K]EW_@G-X3_ &>]>U/6];U2
MW^(&I7$*P6C7VE+#%:+DF0B,R2!F;Y!N."H4X^\:_5<-Q;P;3X8G0^H06)UM
M3<923E?W9>T;YN7:_OJ5KQ6AYM;!I8M3C6<J>GE*W56MR\WWQ\VSY3U3_@HQ
M^T9K&?L^F^%=#!Z&VL68C_OY-)7'ZK^UU^TSKV1/\1DL(C_RSL;&UB(_%80W
MZU^O=OX%\-VF/(\/:5#_ -<[*)?Y+6E;Z79VF/(M((?^N<2K_(5^32XLQ<?]
MWP>&I^E!2?WU',]&6'RR6[K?*<%_[BD?B7>^-OCMXLS]L^*?C*Y1NL5K?W"(
M?^ HX'Z5A77P7\;^*VW:F?%FNDG)\Y9IL_F&K]VZ*YY<9<3[4L<Z:_N4Z,/_
M $FFG^)R2R_*);JN_6K#]*"/P]TO]E_Q"RJ%^&&N:B?5K&^.?^^"*[30_P!F
M[Q]I^W[!\&)DQT^W>'9;C\_M"O\ K7['45X^(SSB+%?QLUQ#\O:R2^Y-(R_L
M[*5M2J?.J_TC$_+'0_A3\>=-V_V5\-=+TPCHUOX.TJW;\6^S@_F:[K3_  W^
MU\L(ALTU"QB[1P'3[9?R&VOT4HKYRMAZV*=\1B:L_6<G^;+6$RZ.U!OUJU?T
MFC\]A\,_VPK[_6ZSJMOG_J-VJ_\ H$E/'P _:NOO]=XXU2VS_P!3+(O_ * U
M?H-17-_95#K*3_[>8OJN6O?")_\ <2O_ /+C\_%_9*_:4U#_ (^?B3,N>OG^
M)+QOY*:D7]A?XWWG_'[\3+0^O_$WOI/YQBOO^BC^R<+U3^]_YB^IY;TPD/\
MP*J_SJ,^ U_X)V_$"\_X_?B/;-GKA[B3^>*DC_X)CZG<L#=_$.'/JNG-)_.0
M5]\44?V1@NM/\63]5P/3"T__  %/\[GPO;_\$O;5<>?\1)7]H]'"_P YS6G;
M_P#!,7PXN//\;:E)_P!<[.-/YL:^U:*M95@E_P ND4L/A5_S#TO_  53_P#D
M3\_OC%_P3IF\/>$[:X^'DNI>*M>:\6.:UN[BVMXTMRCEI 7*#(81C&[^(\=Q
MYW\._P!@_P")-[XTTJW\9>%+RP\-2R[+V[L=4L3-"A! <#S&R V"0%)(!P,X
MK]1:*Y:F282I451*UNBM;YZ'EXK*<)BL13Q#A&+ATC""B];^]'EM+Y]#X]F_
MX)F^ V_U7B?Q G^\8&_]IBJ4W_!,?PHW^J\9:PG^]!$W^%?9]%=;RO!/_ETC
MME@<'/?#T_\ P""_)'Q3_P .U+>U.;'XEZI:^G^@ _RE%6[?]@'Q1I__ !X_
M''7+3'3R[.5?Y70K[+HJ?[)P?2%OF_\ ,P>68-Z>R2]-/R/CYOV-?BO9QXLO
MVA_$9]%9[N,?I=&J4G[*G[0-J?\ 1/CK>3>GVB_O!_5J^SJ*/[+PW2Z_[>E_
MF3'*\+'X%)>DYK_VX^,8_P!GS]J*R/\ HWQBL)<=/M%Y<-_Z%;M4TGPN_:[L
M?]5\2M!NL?W2A_\ 0[05]D44?V;!;5)K_MY@\O\ Y:U1?]OR?YMGQ9-X?_;,
MLO\ 5^(])O0.R)8?^S0K55KW]M*RZV-C>@=P=,'_ +,M?;M%']GOI7G_ .!?
MYHT6%J1^&O/_ ,D?YQ9\-R?$']L/3_\ 7>$K>?']VVM7_P#0)*JR?'G]J_3_
M /7?#DSX_NZ-(_\ Z ]?=U%+ZC57PXB7X/\ 0U4<;#X,3]].D_S@?!$G[67[
M2VG?\?7PH8 ?Q2^&[\#\PXJM)^W7\;+#_C^^&EG%CKNTF]C_ )R5^@%%+ZGB
MEMB'_P" HU57,EO7B_6C3_2*/SVD_P""D'CRP_X_O VF18Z[DN(_YM36_P""
MF.L7,?EW?@72KA#U4W#X_(@U^A=4KK1=/OL_:;"UN,]?-A5OYBCZMCHZQQ'_
M )+_ ,$U6)QZW]E+UIM?^DU$?FMX^_;2T#X@^#M>T.]^$V@12ZI83V2WRLC2
M6[21L@D7,.=REMPY'(ZBOAB3X5RR:D4@OH_LA.0S@[P/3&,?K7[W>(?ACX:U
M+2;Y(_"7AV\O'@<0I?:?$8FD*G:'.QCMSC/!XSP:^%O^'=GQ-_X2/^U/[2\%
M;/M'G?91-.(MN<[=GV;;C''2OILIXSXMX4E)9;7YHU/B7+=*VS7,W9ZO;YGG
M8W,,3SX>%7!4ZE-33ER*I&3CI=7=22U7EH]3[L^%'PUTKX/_  YT'P;HN\Z;
MH]L+>)I?ON<EF=O=F9F/UKK*JZ7]L.FVAU!85O\ R4^T+;L6C$FT;PA(!*YS
M@D X["K5<]:O4Q-25>L[RDVVWNV]6W\ST8VLK!1116)04444 %%%% 'E7QD_
MY*)\"O\ L<[G_P!1[6:]5KRKXR?\E$^!7_8YW/\ ZCVLUZK0!Y5XC_Y.F^'G
M_8F>)?\ TNT*O5:\J\1_\G3?#S_L3/$O_I=H5>JT >5>(_\ DZ;X>?\ 8F>)
M?_2[0J]5KRKQ'_R=-\//^Q,\2_\ I=H5>JT %%%% !17/^,_B%X5^'-A;WWB
MSQ+H_A>RN)A;0W.M7\5I'+*02(U:1E!8A6.T<X!]*WG=8T9W8*JC)9C@ >M
M#J*Y_P '_$+PK\1-&EU?PKXET?Q-I,4K0R7VCW\5W DB@,R&2-BH8!E)&<@,
M/6E\%_$#PO\ $C27U3PEXDTCQ1IB3-;M>Z+?17D*R  E"\;,H8!E)&<X8>M
M&_7E7[)W_)K/P;_[$S1O_2&&O5:\J_9._P"36?@W_P!B9HW_ *0PT >JT444
M %%%% !1110 5YI\;_V=? ?[1&CVFG^-](;4ELO,-G/#<20RVS/MW,A4@$G8
MOW@1QTKTNBMZ%>KAJL:]"3C.+NFM&FMFF3**DN62NCYQ^!G[ OPH^ /BN'Q-
MH5MJFIZ];E_LU[K%[YIM]RE3M1%1#\K$9921]>:^CJ**[,PS/&YM7>)Q]5U)
M[7D[NW8F%.--6@K!1117F&@4444 %%%% !3)(8YAB2-7'^T :?10!0DT'3)O
M]9IUI)_O0*?Z55D\&>'YO]9H6FO_ +UG&?Z5LT5/*NP[LYV3X<^$Y?O^%]%?
M_>T^$_\ LM5W^%/@F3[_ (.T!O\ >TN _P#LE=512]G#L(X]O@WX D^]X'\-
MM]=(MS_[)43?!'X=-][P#X7/UT:V_P#B*[6BI]E3_E7W$\J>Z.&;X$_#5NOP
M\\*GZZ);?_$5C>,/V<?A[KGA/6].L/ ?A>RO[RQGM[>ZATJWA>&1XV57601,
M4()!# $C&<'I7J5%2Z%)JW*ON)]G"]U%7]$?FQ_P[4^)7VG=_;?A3R=^=OVV
MYW;<],_9L9Q[5]T:/\$? T.FVAO/A_X1AU#R4^T"TTBW,8DVC<$)C!*YS@D
MX["N_HKBPN6X?"-NFM^^IYV#RVA@7)TK^]J[ZZG-6OPT\(66#;^%-$@(_P">
M6G0K_):V;71["Q4"VLK>W Z"*)5_D*N45Z2C%;(]2R"BBBJ&%%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110!Y5\9/^2B? K_L<[G_ -1[6:]5KRKXR?\ )1/@5_V.=S_ZCVLU
MZK0!Y5XC_P"3IOAY_P!B9XE_]+M"KU6O*O$?_)TWP\_[$SQ+_P"EVA5ZK0!Y
M5XC_ .3IOAY_V)GB7_TNT*O5:\J\1_\ )TWP\_[$SQ+_ .EVA5ZK0 4444 ?
M.7QN>R'[0V@)XA:W_P"$>/PZ\4&-;P_N3,)=.\XG/&?LYD_X"7[9K"\5/XEC
M_P""9%P\[7"^)5^%\9N6)83A_P"S5\TMWW[=V??-?17C/X>^%?B-86]CXL\-
M:/XHLK>87,-MK5A%=QQ2@$"15D5@& 9AN'."?6M'^P=,_M>XU7^SK3^U+BV2
MSFOO(7SY8$9V2)GQN**TDA"DX!=B!R: /C?XS/<1Z/\ M7/X.9%T=?AQI1A:
MP)"";[+J&\IM_B^R?9O?;Y/;%>P?"+[-_P -)?%3^P_(_P"$:_X1_P ->7]E
M_P!5]HV7OW<<9^S_ &3/?;Y7;%>K^#_A[X5^'>C2Z1X5\-:/X9TF65II+'1[
M"*T@>1@%9S'&H4L0J@G&2%'I2^"_ 'A?X;Z2^E^$O#>D>%],>9KAK+1;&*SA
M:0@ N4C55+$*H)QG"CTH A\<:AXPT^UMF\'Z%H>NW+.1/'KFM3:8D:8X*-%:
M7)<Y[%5^IZ5Y)\)])^-_PO\ A7X-\&_\(5\/]3_X1W1K/2/MO_";WT7VC[/
MD7F;/[';;NV9V[CC.,GK7T!10!Y5_P ))\;_ /HGGP__ /"\OO\ Y34?\))\
M;_\ HGGP_P#_  O+[_Y35ZK10!Y5_P ))\;_ /HGGP__ /"\OO\ Y34?\))\
M;_\ HGGP_P#_  O+[_Y35ZK10!Y5_P ))\;_ /HGGP__ /"\OO\ Y34?\))\
M;_\ HGGP_P#_  O+[_Y35ZK10!Y5_P ))\;_ /HGGP__ /"\OO\ Y34?\))\
M;_\ HGGP_P#_  O+[_Y35UOC;XI>"_AI]A_X2_Q=H/A7[>S+:?VWJ<-G]H*[
M=PC\UEWD;ESC.-P]:LZU\0?"WAOQ!I.A:OXETC2M;U=BNG:;>W\4-S>D$ B&
M)F#2$$C[H/6@#R[PC<_M :!I,]MJGA7P'KMS)J%]=)=2^-[V,I#-=2S0P8_L
M<Y$,4D<(;/S"(' S@;?_  DGQO\ ^B>?#_\ \+R^_P#E-7I6HZQ8:.+8W][;
MV0N9TMH#<2K'YLSG"1KD_,S'HHY-<5=?M"?"RQ\3MX;N?B5X/M_$2W(LFTB7
M7K5;L7!;:(3"9-^_<0-N,Y.,4 97_"2?&_\ Z)Y\/_\ PO+[_P"4U'_"2?&_
M_HGGP_\ _"\OO_E-7JM% 'E7_"2?&_\ Z)Y\/_\ PO+[_P"4U'_"2?&__HGG
MP_\ _"\OO_E-7JM% 'E7_"2?&_\ Z)Y\/_\ PO+[_P"4U'_"2?&__HGGP_\
M_"\OO_E-7JM% 'E7_"2?&_\ Z)Y\/_\ PO+[_P"4U'_"2?&__HGGP_\ _"\O
MO_E-7JM% 'E7_"2?&_\ Z)Y\/_\ PO+[_P"4U'_"2?&__HGGP_\ _"\OO_E-
M7JM% 'E7_"2?&_\ Z)Y\/_\ PO+[_P"4U'_"2?&__HGGP_\ _"\OO_E-7JM%
M 'E7_"2?&_\ Z)Y\/_\ PO+[_P"4U'_"2?&__HGGP_\ _"\OO_E-7JM% 'E7
M_"2?&_\ Z)Y\/_\ PO+[_P"4U'_"2?&__HGGP_\ _"\OO_E-7H7B3Q-H_@W1
M+K6=?U6QT/1[10UQJ&I7*6]O"I(4%Y'(51D@<GJ16*_Q>\"1^!D\:OXU\.KX
M-D;:GB)M5@&GL?,,6!<;_+)\P%/O?>!'7B@#SRTN?V@(/&FJZO+X5\!SZ3=:
M?9VMOHY\;WH2UFBDN6EG#_V/R95GA4K@8^S Y.[C;_X23XW_ /1//A__ .%Y
M??\ RFKTFWUBPO-)BU6"]MY],E@%S'>QRJT+PE=PD#@[2I7G=G&.:Y_Q/\6O
M _@G0].UOQ%XS\/Z!HVI;39:CJFJ06UO=;EWKY4CN%?*_,-I.1STH Y;_A)/
MC?\ ]$\^'_\ X7E]_P#*:C_A)/C?_P!$\^'_ /X7E]_\IJ]5HH \J_X23XW_
M /1//A__ .%Y??\ RFH_X23XW_\ 1//A_P#^%Y??_*:O5:* /*O^$D^-_P#T
M3SX?_P#A>7W_ ,IJ/^$D^-__ $3SX?\ _A>7W_RFKU6B@#RK_A)/C?\ ]$\^
M'_\ X7E]_P#*:C_A)/C?_P!$\^'_ /X7E]_\IJ]5HH \J_X23XW_ /1//A__
M .%Y??\ RFH_X23XW_\ 1//A_P#^%Y??_*:O5:* /*O^$D^-_P#T3SX?_P#A
M>7W_ ,IJ/^$D^-__ $3SX?\ _A>7W_RFKU6B@#RK_A)/C?\ ]$\^'_\ X7E]
M_P#*:C_A)/C?_P!$\^'_ /X7E]_\IJ]5HH \J_X23XW_ /1//A__ .%Y??\
MRFH_X23XW_\ 1//A_P#^%Y??_*:O5:Y;PE\5O!7CZXU.W\,>,- \1SZ60+^+
M2=3@NFM"2P E$;$IDH_WL?=/H: /.-?N?V@-4U;PU<V7A7P'IEMINH/=7UJG
MC>]<:C";6XA$#'^QQL EFBFW8/, &/FR-O\ X23XW_\ 1//A_P#^%Y??_*:N
MV\%_$#PO\2-)?5/"7B32/%&F),UNU[HM]%>0K( "4+QLRA@&4D9SAAZU->>-
M/#^GZ;K.H76NZ;;6&BLR:I=37D:16#*BR,)V)Q$0CHQW$85E/0B@#@_^$D^-
M_P#T3SX?_P#A>7W_ ,IJ/^$D^-__ $3SX?\ _A>7W_RFKO\ PMXLT/QQH-KK
M?AO6=/\ $&BW6[R-1TNZ2YMYMK%&V2(2K8964X/!4CJ*UJ /*O\ A)/C?_T3
MSX?_ /A>7W_RFH_X23XW_P#1//A__P"%Y??_ "FKU6B@#RK_ (23XW_]$\^'
M_P#X7E]_\IJ/^$D^-_\ T3SX?_\ A>7W_P IJ]5HH \J_P"$D^-__1//A_\
M^%Y??_*:C_A)/C?_ -$\^'__ (7E]_\ *:O5:* /*O\ A)/C?_T3SX?_ /A>
M7W_RFH_X23XW_P#1//A__P"%Y??_ "FKU6B@#RK_ (23XW_]$\^'_P#X7E]_
M\IJ/^$D^-_\ T3SX?_\ A>7W_P IJ]5HH \J_P"$D^-__1//A_\ ^%Y??_*:
MC_A)/C?_ -$\^'__ (7E]_\ *:O5:* /*O\ A)/C?_T3SX?_ /A>7W_RFH_X
M23XW_P#1//A__P"%Y??_ "FKU6N7OOBEX,TOQE:>$;WQ=H-IXLNU#V^@SZE"
ME],I!(*0%M[ A6Z#^$^E 'F_C>Y_: \2>"]?TC2/"O@/P[JVH:?<6MGK$/C>
M]E>QF>-ECG5/['&XHQ#!<C.W&16W_P ))\;_ /HGGP__ /"\OO\ Y35VMM\0
MO"MYXRN_"-OXET>?Q9:0BYN-!COXFOH8B%(D> -O5<.GS$8^=?457L?BEX,U
M3QE=^$;+Q=H-WXLM%+W&@P:E"]]"H )+P!MZ@!EZC^(>M ')?\))\;_^B>?#
M_P#\+R^_^4U'_"2?&_\ Z)Y\/_\ PO+[_P"4U=KX?^(7A7Q;K.LZ1H?B71]9
MU;19?)U.QT^_BGGL9,LNR>-&+1ME'&& .5/H:Z"@#RK_ (23XW_]$\^'_P#X
M7E]_\IJ/^$D^-_\ T3SX?_\ A>7W_P IJ]5HH \J_P"$D^-__1//A_\ ^%Y?
M?_*:C_A)/C?_ -$\^'__ (7E]_\ *:O5:* /*O\ A)/C?_T3SX?_ /A>7W_R
MFH_X23XW_P#1//A__P"%Y??_ "FKU6B@#RK_ (23XW_]$\^'_P#X7E]_\IJ/
M^$D^-_\ T3SX?_\ A>7W_P IJ]5HH \J_P"$D^-__1//A_\ ^%Y??_*:C_A)
M/C?_ -$\^'__ (7E]_\ *:O5:* /*O\ A)/C?_T3SX?_ /A>7W_RFH_X23XW
M_P#1//A__P"%Y??_ "FKU6B@#RK_ (23XW_]$\^'_P#X7E]_\IJ/^$D^-_\
MT3SX?_\ A>7W_P IJ]5KG/&WQ(\)?#/3X+_Q?XHT7PI8W$OD0W.MZA#9Q228
M+;%:5E!; )P.< T <;_PDGQO_P"B>?#_ /\ "\OO_E-6)H%S^T!I>K>);F]\
M*^ ]3MM2U!+JQM7\;WJ#3H1:V\)@4_V.=X,L,LV[ YG(Q\N3Z7KWQ,\(>%O[
M$_MKQ7HFD?VY(L6E?;]1A@_M!VV[5@W,/-)WI@)G.X>HIGBWXI>#/ .H:;8>
M)_%V@^'+[4V*6-KJVI0VLMVP(4B)9&!<Y91\N>6'K0!R7_"2?&__ *)Y\/\
M_P +R^_^4U'_  DGQO\ ^B>?#_\ \+R^_P#E-7I-_K%AI4UE%>WUM9RWT_V6
MT2XE5&N)MC/Y<8)^9]J.VT9.$8] :N4 >5?\))\;_P#HGGP__P#"\OO_ )34
M?\))\;_^B>?#_P#\+R^_^4U>JT4 >5?\))\;_P#HGGP__P#"\OO_ )34?\))
M\;_^B>?#_P#\+R^_^4U>JT4 >5?\))\;_P#HGGP__P#"\OO_ )34?\))\;_^
MB>?#_P#\+R^_^4U>JT4 >5?\))\;_P#HGGP__P#"\OO_ )34?\))\;_^B>?#
M_P#\+R^_^4U>JT4 >5?\))\;_P#HGGP__P#"\OO_ )34?\))\;_^B>?#_P#\
M+R^_^4U>JT4 >5?\))\;_P#HGGP__P#"\OO_ )34?\))\;_^B>?#_P#\+R^_
M^4U>JT4 >5?\))\;_P#HGGP__P#"\OO_ )34?\))\;_^B>?#_P#\+R^_^4U>
MJU3UC6=/\.Z3>:IJM];:9IEG"UQ<WMY,L,,$:C+.[L0JJ "22< "@#S;_A)/
MC?\ ]$\^'_\ X7E]_P#*:L2[N?V@)_&FE:O%X5\!P:3:Z?>6MQHX\;WI2ZFE
MDMFBG+_V/P8E@F4+@Y^TDY&WGT.P^+G@75?!MUXNLO&GAZ\\)VI9;C7K?58'
ML82I 8/.'V+@D9R>XJQ??$WP?I?@N/QA>>*]#M/"4B1RIK\^HPI8,CL%1A.6
M\LAF( .[DD 4 <?_ ,))\;_^B>?#_P#\+R^_^4U'_"2?&_\ Z)Y\/_\ PO+[
M_P"4U='JOQH^'VA>$].\4ZEX[\,Z?X9U)_+LM:NM8MXK*Z8AB%BF9PCG".<*
M3]T^AKJ[*]M]2LX+NTGBNK2XC66&>%PZ2(PRK*PX(((((ZYH \Q_X23XW_\
M1//A_P#^%Y??_*:C_A)/C?\ ]$\^'_\ X7E]_P#*:O5:* /*O^$D^-__ $3S
MX?\ _A>7W_RFH_X23XW_ /1//A__ .%Y??\ RFKU6B@#RK_A)/C?_P!$\^'_
M /X7E]_\IJ/^$D^-_P#T3SX?_P#A>7W_ ,IJ]5HH \4N= ^*?CCX@?#N_P#$
MGAKP?X?T7PSK,^KW$VE^*+K4;B;=IE]9K&D3Z= OWKQ6+&3@(>"37M=%% 'E
M7B/_ ).F^'G_ &)GB7_TNT*O5:\J\1_\G3?#S_L3/$O_ *7:%7JM 'E7B/\
MY.F^'G_8F>)?_2[0J]5KRKQ'_P G3?#S_L3/$O\ Z7:%7JM !1110 4444 %
M%%% !1110 4444 %%%% !1110!X]\=M8LHQ/X8\/^']/\0?$SQ9I4^EVD,\*
M[8;$Y62XO90-R6<32Y*]79@B N]?-?Q#\)?\*_\ #7QD\*&]74=9T'PEX(TO
M0;N\SY\WDSR1VCJ"20S7JEAM)_>$=\5]@>-O@C\.OB5JL6I^+O 'A?Q5J4,(
MMH[S6]&MKR9(@S,(P\B,0H9W.W.,L3W-66^$O@=KKP[<MX,\/FX\-QK#HDQT
MN#?I:  !;8[,P@ # 3 X% 'C/[4G@/3)OB1\&/&,SWTVK0^,M,TRWBDO93:0
M1D7,CNEON\L2N=JM+MWE45<A<@]1XLM_^%C?M,^'/#MP6DT3P3I*^*;FVP3'
M+J%S++;V!?L?+6WO9 I_C,;<%0:]<U30M-UPV9U'3[74#97"WEJ;J!9?(G4$
M+*FX':X#'##D9//-.AT>PM=4N]2AL;:+4;N..&XO$A59IDC+&-7<#+!3(^T$
MX&]L=30!<HHHH **** "BBB@ HHHH **** "BBB@ HHHH X_XI>)?"W@WPN-
M>\66T5W:Z?=0RV4'V3[5<27I;9;I:Q %GN&=@D:H-Q9L#K7S?I_@76O!_P 4
M/A9K7BRVM](E\:?$35/$-UHB2B2#3;E]!N(K.W9P?+DG"6[.[+\IF=]A8!6/
MU#XT\ >%_B1I*:7XM\-Z1XHTQ)EN%LM:L8KR%9 " X2164, S '&<,?6L2U^
M WPSL?"=[X7MOAWX3M_#-],MS=:+%HELMG<2KMVR20A-C,-JX8@D;1Z4 ?/?
MA;P'8?$#]@NYL]9>[.D6<6O7]E;:?>RVT%S:1W-]]BCD\ME\VW\EH6$1RC!$
MR"HP<7^S9_$\WP7TK1[W3= UR'X27$DFK>(4%Q82V,L5BD\"0';B8%(V,X?;
M&A(>*8. GV4FA:;'H:Z,FGVJZ.MO]C&GK HMQ!MV>5Y>-NS;\NW&,<8K!\3_
M  E\#^-M#T[1/$7@SP_K^C:;M%EIVJ:7!<V]KM78OE1NA5,+\HV@8''2@#G/
MV7=4LM:_9M^%MYIMA?:9ITGAG3A;6FI3":XCB%M&J!Y J"0[0#O"KN!#;5S@
M>GTU$6-%1%"JHP%48 'I3J "BBB@ HHHH **** "BBB@ HHHH **** *^H16
ML]C<QWJ0R63QLLZ7 !C:,@[@P/!7&<YXQ7Q3\<M/N_B5\,_B3\3O!M@NA^#?
M#_PWUCPYX;FM8C!)J\$HBDEN8D7&RTC2U58./WFYY% 3RV?[6U#3[75K"YL;
MZVAO;*ZB:&>VN(Q)'+&P(9&4\,I!((/!!KC/"/P&^&?P_P!5;4_"_P ._"?A
MO4FB: WFD:);6LQC;&Y-\: [3@9&<'% 'FWP]TRUUOX\_&/3M%N6L_#%WX7\
M/6Z7.D3&%HIWBOEWPNOW)!;FT(8<@"$],5Y'X3^%.G1?#7XJ^'=#U+2M"BT?
MXOP7VGP^)[Z0V>H7,0TV6.UN9Y"\CF>7"[SYCF1E;#MP?L'P7X \+_#?27TO
MPEX;TCPOICS-<-9:+8Q6<+2$ %RD:JI8A5!.,X4>E+>> ?#&H:3K.EW7AS2;
MG3-:E:?5+.:QB>&_D955GG0KB5B$0$L"2%7T% 'BW[+>I:]K'Q$^.UUJ]KIU
MC$?%%M%]FT:X>YLDNDTVU2Y$<SQ1&5@P178QI\ZL,<9/T/67X9\+:+X*T.UT
M7P]I%AH.C6H86^GZ9;);6\(9BS!(T 5<LS$X'4D]ZU* "BBB@ HHHH ****
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
M6PLH]-O193%;Q;5VE,DSQ^6ODKE2Y8Q[0& .U_X1SXW_ /10OA__ .$'??\
MRYH_X1SXW_\ 10OA_P#^$'??_+FO2-#OKG4]%L+R\TZ;2+RXMXY9M/N'C>6U
M=E!:)VC9D9E)*DHS*2."1S5V@#RK_A'/C?\ ]%"^'_\ X0=]_P#+FC_A'/C?
M_P!%"^'_ /X0=]_\N:]5HH \J_X1SXW_ /10OA__ .$'??\ RYH_X1SXW_\
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
M@7[9#(TL<+X$;Q2$@HRJS@ ],_X1SXW_ /10OA__ .$'??\ RYH_X1SXW_\
M10OA_P#^$'??_+FNT^'^N:WXE\&Z5JOB+0!X6UB\B\Z;1_M8NFM 22B/($4&
M39MW@ A6+*&< .W0T >5?\(Y\;_^BA?#_P#\(.^_^7-'_".?&_\ Z*%\/_\
MP@[[_P"7->JT4 >5?\(Y\;_^BA?#_P#\(.^_^7-'_".?&_\ Z*%\/_\ P@[[
M_P"7->JT4 >5?\(Y\;_^BA?#_P#\(.^_^7-'_".?&_\ Z*%\/_\ P@[[_P"7
M-=UXT\::+\._#%]XB\17RZ;HUBJM<73(SA S!%^506)+,H  )R:\B_X;F^"'
M_0[?^4F^_P#C%<U3$T*+Y:LU%^;2.2MC,-AY<M:I&+\VE^9T?_".?&__ **%
M\/\ _P (.^_^7-'_  CGQO\ ^BA?#_\ \(.^_P#ES7G7_#P#X7?\)\=+_M9O
M^$:_L_S_ .W?L5SC[5YF/(\KR]^-GS;MN,\5T7_#<WP0_P"AV_\ *3??_&*P
MCF&$E?\ >Q^]'-'-<!*]J\=/[R.C_P"$<^-__10OA_\ ^$'??_+FC_A'/C?_
M -%"^'__ (0=]_\ +FO)OV@/C?X8^(7@7X;:QX8\3>(;CPO=^/;;2M5D\)G4
M[:^FC^QW3O $M MTV3Y3;4'. >U4?A[\6$\&Q_''QIX/E\5^)?AAX1\.FZ6Q
M\87VH_:?[<M([J6\MHWU$-=1)Y(M VY2BNQ*@G>*[HRC4BI0=TST83C4BIP=
MT^J/9_\ A'/C?_T4+X?_ /A!WW_RYH_X1SXW_P#10OA__P"$'??_ "YKDOB1
M^U@?A_=7T'_"*F]6V\,:9XC>Z:^:."!;N\:V8W!6%VC@@"F6295<A Q\OY>:
MVK?M:OI/PGT+Q>^E^%Y!J6N2:*^J0^+XY_#5J%\PI<RZK#;N8XGV)&"]NI$L
MBHP48<T6=M_PCGQO_P"BA?#_ /\ "#OO_ES1_P (Y\;_ /HH7P__ /"#OO\
MY<UY-XT_;TTOPC;Z.DECX5AU&3PROB?4+?5/&UI:PO$SNB0:9.J2)J$KF&8I
M_JEP(][1F3:O'?&CXO:UJ7Q U;4/#GB36+'0KW2_A_?V,$-Y+ J1WFO2I*0@
M8!3+#M1_[R@*V0,4 ?17_".?&_\ Z*%\/_\ P@[[_P"7-'_".?&__HH7P_\
M_"#OO_ES3OCYI'AM?#<GB/Q?XJ\3:'H&DV\@-GX=UFYTUKBXD9%B(-JR3S3%
MOW<<(<H[38\MWV%?(;>'QQXU3X$?#GQ[K?B#1=6U3PKJ>L:]=:/J,NFWLEY;
M1VD42//:NARAO7=T5MC.B9!'% 'KG_".?&__ **%\/\ _P (.^_^7-'_  CG
MQO\ ^BA?#_\ \(.^_P#ES7RI)\8/&'Q4^%%SXLN_$.M:-K'A'X-V?CFU.EWL
MUE#=:M(;MWEN(HG5;B(_V>BB*4-'B:7Y><UWW[0/C;7]>U/Q]J%GK>M^'7\"
M_"^+QKI4&FW\]I%)J,CW<F;F.-U6YC46$<?ERADQ)+\N3F@#VW_A'/C?_P!%
M"^'_ /X0=]_\N:/^$<^-_P#T4+X?_P#A!WW_ ,N:]'T/4&U?1-/OGC,+75O'
M.8R.5+*&Q^&:O4 >5?\ ".?&_P#Z*%\/_P#P@[[_ .7-'_".?&__ **%\/\
M_P (.^_^7->JT4 >5?\ ".?&_P#Z*%\/_P#P@[[_ .7-'_".?&__ **%\/\
M_P (.^_^7->JT4 >5?\ ".?&_P#Z*%\/_P#P@[[_ .7-'_".?&__ **%\/\
M_P (.^_^7-=!\6OC-X-^!?A>/Q%XYUI-"T>2Y2S2X:"68O,RLRH$B1F)VHYX
M'137@GC+_@IQ\"=#\*ZI?Z%XHD\2ZS;P,]GI$6FWMN;J7'RIYLD 5 3U8]!G
M )P#]!E_#V<9K&,\#A*E2+=N:,).-_.5N56ZW>G4RE6IT])22/6_^$<^-_\
MT4+X?_\ A!WW_P N:/\ A'/C?_T4+X?_ /A!WW_RYKX\^ ?_  5HM/$7BRZL
M/BOI>F^%=$DB9[75M)BN9A$XQB.6,"1FW#.&4#! R,'(^@?^'D7[.G_11/\
MRB:C_P#(]>[F' G$F6U_85,%4F[7O"+G'7SBFK^6YE#%49JZDOF>A?\ ".?&
M_P#Z*%\/_P#P@[[_ .7-'_".?&__ **%\/\ _P (.^_^7-<)\<M0UKQ-<>%/
M&.DZ7XR\<_"AM!N=1EL?AUK;Z9J4D[B*6WN,)<VTUQ&8?-"PQR%BSC]TYV[>
M,^(7Q0_LO]G/PU'HOC'Q1\01_P )'+;3VFE6M[I_BB_TNSN9?M=H0NRXCN;:
M)%629S 93$%9D:X&[X2490DXR5FCJ/;O^$<^-_\ T4+X?_\ A!WW_P N:/\
MA'/C?_T4+X?_ /A!WW_RYKP+Q5\17F_91^&!E\?W?B"Z'B30+'7;[P7K-W=7
MYM9YD?[,9K0BZEE-M)&"0!++D/C+UZC^S^;T_$[Q?_8 \<+\-!IEB+?_ (3P
M:I]H.J>9/YYMO[3/VGRO)^S[L_N]WW.=^9 ZS_A'/C?_ -%"^'__ (0=]_\
M+FC_ (1SXW_]%"^'_P#X0=]_\N:\AM?%3Z'^T!XFUWQ]I'Q*L-$N_&5KHGA[
M6!K%U:^'K7-G;0PQO9)>+YB3W0D_>FU>$O.@9Q\VVK_PF&O_ /"QO^$U_MW7
M?/\ ^%J?\(7_ &-]OF_L[^S/(\C9]DW>5N\W_2/.V^9GC=L^6@#VC_A'/C?_
M -%"^'__ (0=]_\ +FC_ (1SXW_]%"^'_P#X0=]_\N:\7^!GC#7[CQE\*?$U
MWKNNW\OQ%_X2'^UM-OK^::S@\F4RVOD6[,8[;R4C,/[I5WAR7W-AAZ?\1A>?
M$+X^:!\/;C7-4T7PS!X?N?$%[;Z)J$VGW6I2B>.WBC-S Z3)%'O9V$;J69H@
MQ*Y5@#9_X1SXW_\ 10OA_P#^$'??_+FC_A'/C?\ ]%"^'_\ X0=]_P#+FL[5
MM>U']GKPC;Z:-0NO'U_K/B2+1_#-EJMTZ2P?: &2WNKUS+)(D02>0SLKR>6%
M7;(Z[GYF']J;Q%J.N:1X3T_P#9R>.;C7-2\/WUC=:^T6GVEQ:6L5WY@NA:L\
MD,EO-&ZL(0P+A2@^8J =O_PCGQO_ .BA?#__ ,(.^_\ ES1_PCGQO_Z*%\/_
M /P@[[_Y<UYKX1_;(U?7-(\/ZUJOP^AT;1_$7A_5-6TLKKHN+EKG3XD>X@FC
M%N$CC9O.$<JR.S*B%XHRY1*C_M?^.FT^[GA^%.EF9?!T?CRW27Q:50Z65E+Q
MRL+(E+L%(PL:K)$P=R9DV . >J_\(Y\;_P#HH7P__P#"#OO_ )<T?\(Y\;_^
MBA?#_P#\(.^_^7-5Y_VA+9O$BZ=9Z-)<6<O@=_&L-U+<"-V0.JK;M&%.TD,"
M7W''3!ZUYA+^VOK<GAW4_$EI\.[23P[H6AZ)K^MW%QXA,<\4.HP),$MHA:L)
MWB!DR':(-M7!RQ"@'J__  CGQO\ ^BA?#_\ \(.^_P#ES1_PCGQO_P"BA?#_
M /\ "#OO_ES7GOA+XXZE8ZMJWAOP[H][XF\4:OXWUVPM(/$GB!DM+>&S57F?
MSUMG:" ;D2.%8I"&D W;=S+J?&7]J#5?@YX4T2_U7PUX=TC6[S2[K4+C2/$O
MC*WT]FE@";K2R\N*>2\F<M\FV)5(*[BCL$H Z[_A'/C?_P!%"^'_ /X0=]_\
MN:/^$<^-_P#T4+X?_P#A!WW_ ,N:\!\6?M#>*_$:_%N[N!=6O@6ST;PKJFC_
M -BZS]AU2W^W3@\2"T;;Y@SY@+N%$85<^:S)ZY<?M.7,/BMRGA-9? D/BZ/P
M1-KXU(_;%U%W2$.+/R=IMQ<R) 9/.#AMS>7M&X@'1?\ ".?&_P#Z*%\/_P#P
M@[[_ .7-'_".?&__ **%\/\ _P (.^_^7-<:/VI=;7QC<6\O@>TB\(6WC9/
MLNL'7";PW<C*L<R6@MMIBW21!BTRL"6PK!06T?@+^TV_QK\6:EH[Z-H^D_98
M;F9K.'Q%'<:O8-#<B P:CISQ12VLISN&WSH_E8>9S&9 #H?^$<^-_P#T4+X?
M_P#A!WW_ ,N:/^$<^-__ $4+X?\ _A!WW_RYKQGQ?)J7B3]J#XDZ7<>'_B9X
MRTS3=+T5[2T\%^,FT:WL&E2Y,A>,ZG9JS2;%Y ?_ %9R5R,^DZ]\7M9\"ZCI
M7@SPGX(NM=O]/\+_ /"1:G:^(?$92[M+57$:0><1<FZNW99A\\@C)B):?Y@2
M ;O_  CGQO\ ^BA?#_\ \(.^_P#ES1_PCGQO_P"BA?#_ /\ "#OO_ES7/>$O
MVH/^$IL] N/^$9^R_P!J_#B/X@;?M^_RMXC/V3_5#=C?_K>.GW*\V\/?M5WR
MW&K>(M,\,:IK.I>([KPK:VNA7WB,"RM9=2TX3((<V_[E%8@2'#%SEP <(0#V
MK_A'/C?_ -%"^'__ (0=]_\ +FC_ (1SXW_]%"^'_P#X0=]_\N:X6']JKQ)>
M>*M.\$6O@#3W^($FM7VB7UA-XB9-.M9+>TBO4F6Z%J9)(I+>:,@^0KJY*E,
MO5GX._M3:O\ $O6O ,>J^!H?#>C^-M.O;G2[E=:%W<I<V8B%Q%-"(%18RS3>
M7(LK,RQH7CB+E$ .Q_X1SXW_ /10OA__ .$'??\ RYH_X1SXW_\ 10OA_P#^
M$'??_+FO']!_X*#^'=>U@PP6>@W%G?1ZK_9-M9>)XKC5S)90S3?Z=8K%FSCE
M2WE*/OD(S&'52^!C?%3]K[XAV_PCUZ\T[PGIGA'Q#=^#HO&.A7B:Y]N*6;7$
M,;^>CV01)U$\1\L>:C;F'F#;D@'O/_".?&__ **%\/\ _P (.^_^7-'_  CG
MQO\ ^BA?#_\ \(.^_P#ES7IFF27DVFVCZC!!:Z@T2-<06LS311R%1O5)&1"Z
M@Y 8HI( .T=!9H \J_X1SXW_ /10OA__ .$'??\ RYH_X1SXW_\ 10OA_P#^
M$'??_+FO5:* /*O^$<^-_P#T4+X?_P#A!WW_ ,N:/^$<^-__ $4+X?\ _A!W
MW_RYKU6B@#S7X,>+/%6O7WQ T;Q==Z/J.I>&/$":5'?:+ITMA#/$^FV-X&,,
MEQ.0P:\=<^9@A <#FO2J\J^#?_)1/CK_ -CG;?\ J/:-7JM 'E7B/_DZ;X>?
M]B9XE_\ 2[0J]5KRKQ'_ ,G3?#S_ +$SQ+_Z7:%7JM 'E7B/_DZ;X>?]B9XE
M_P#2[0J]5KRKQ'_R=-\//^Q,\2_^EVA5ZK0 4444 %%%% !1110 5Y5^S3_R
M3O5_^QS\6?\ J0ZC7JM>/Z?^S_JN@R:E'H'Q=\<>']-O=3OM5&FVEOHDL,$M
MW=2W4RHT^FR2;?-FD(#.Q (&>* /8**\J_X4WXN_Z+K\0/\ P!\/?_*JC_A3
M?B[_ *+K\0/_  !\/?\ RJH ]5HKRK_A3?B[_HNOQ _\ ?#W_P JJ/\ A3?B
M[_HNOQ _\ ?#W_RJH ]5K)\3>$="\;:9_9OB'1=/U[3MXD^R:G:QW,6X=&V.
M",C)YQWK@/\ A3?B[_HNOQ _\ ?#W_RJH_X4WXN_Z+K\0/\ P!\/?_*JFFXN
MZ'&3B[Q=F:/_  SG\)_^B8>#?_"?M/\ XW7.:'^QS\'M"\5:UKL?@31[N;5-
MFZROK2.>SML=?(@92D>X\G ]A@<5I?\ "F_%W_1=?B!_X ^'O_E51_PIOQ=_
MT77X@?\ @#X>_P#E570L37BFE-Z^;.I8S$Q32J/7S9H_\,Y_"?\ Z)AX-_\
M"?M/_C=)XO\ @9X?\1:?X=BTB6Z\"W_AN1WT;4O"Z06\M@L@Q+$D;Q/"T4@
M#1O&RDA6P&56&?\ \*;\7?\ 1=?B!_X ^'O_ )54?\*;\7?]%U^('_@#X>_^
M5592J3FK2DV8SK5*BM.3?JRE=_LP>']2\%ZOHU]KVOWVMZMJUKKMYXMN);<Z
MI)>VLL<EK)Q +=5B\F-%B$(B"@Y0L[LV;I?[(?AFP\1?VY<^(_$VK:H^K7.N
M37%]<VY,UW<:4=,F=@L"@*T1+A%VJKXVA4 CK?\ ^%-^+O\ HNOQ _\  'P]
M_P#*JC_A3?B[_HNOQ _\ ?#W_P JJS,CF8_V,_!_]EZ1;2ZWXBN;S0-)TO1_
M#FJ2SV_VKP_'8A-DEF1 %625XU>9G5_,P$(\H+&/7M T_6K/6?$,VI:G]MT^
MXN8FTRW(3-M"MO$K@E8T/S2B5L,7(W9# $1IP_\ PIOQ=_T77X@?^ /A[_Y5
M4?\ "F_%W_1=?B!_X ^'O_E50 W2OV;O#.CZIHE_#?:LTVD>*]4\80+)-$5:
M\OQ<B:-L1\Q+]KDV@8887+-@YRX?V5=#TE[:\\.^*?$OA77K>]U:Z77-,DLW
MNFBU*Z^U75JRSVTD30^<(V7,>]/*7#\ONUO^%-^+O^BZ_$#_ , ?#W_RJH_X
M4WXN_P"BZ_$#_P  ?#W_ ,JJ .W\,^%&\+QVMO#K>K7]A;6$-C%:ZG<"Z.Z,
MMFX>=U,\DKAE#%Y&7]VI"J2Q;>KRK_A3?B[_ *+K\0/_  !\/?\ RJH_X4WX
MN_Z+K\0/_ 'P]_\ *J@#U6BO*O\ A3?B[_HNOQ _\ ?#W_RJH_X4WXN_Z+K\
M0/\ P!\/?_*J@#U6BO*O^%-^+O\ HNOQ _\  'P]_P#*JC_A3?B[_HNOQ _\
M ?#W_P JJ /5:Y#5/@[X!US4+B_U'P1X<O[ZX<R375UI-O)+(QZLS,A)/N:Y
MG_A3?B[_ *+K\0/_  !\/?\ RJH_X4WXN_Z+K\0/_ 'P]_\ *JDTGN;TJ]6@
M^:E-Q?DVOR.3^)'[#_PU^(VN0:E]GN_"_E6RV_V/PVEM:6[X9F\QD\ELN=^"
MV>BJ.U;OPW_9)^&OPYT.?3?^$?M/%'FW+7'VSQ)96UW<)E57RU?REP@V9"XZ
MLQ[U?_X4WXN_Z+K\0/\ P!\/?_*JC_A3?B[_ *+K\0/_  !\/?\ RJK/V<+W
ML>S/B#-JF'6%EB9<BZ7_ %W.EL/@_P""-&>:72?".AZ+=RPR0?;--TV""94=
M2K!75 1D&N*U[]E/P5XD\!_"[PM>OJ30?#F;39M$U!)D6[_T(1!$E;9M=)/)
MC\Q0H!*@C:54C0_X4WXN_P"BZ_$#_P  ?#W_ ,JJ/^%-^+O^BZ_$#_P!\/?_
M "JK1)+8\6K6J5Y<U63D_-W.K\0?#G3?$GCSPGXMN9[I-2\-)>)9Q1.HA<7,
M:))Y@*DG 08P1SG.:Y_Q5\$UUCQE=>*= \9^)/ >LW]O';:E)H!LI8[]8\^2
MTL5Y;7"!T!90\:HQ#88L%4+4_P"%-^+O^BZ_$#_P!\/?_*JC_A3?B[_HNOQ
M_P# 'P]_\JJ9B8&C_LFZ5X+UO^T? OC?Q9X"W:5:Z1-;Z2=/NHYHK>2>1'<W
MMG<.9"]S,S/N^8MDU[#X;TFZT/1+6QO=9OO$-U"I#ZGJ20)<3G).7$$448(!
MQ\J*, =\D^>_\*;\7?\ 1=?B!_X ^'O_ )54?\*;\7?]%U^('_@#X>_^55 &
M5I_[*^@Z>MCI(\3>))_ 5A?IJ%KX#FFM3I$+H_FQ1@BW%RT,<H618&G,8*JN
MW8H07M6_9I\.ZOXTN=:DU;6HM(O=7M_$.H>%(I8/[+OM2@5!%=2 PF8,&A@<
MHDJQLT"%D;+[I_\ A3?B[_HNOQ _\ ?#W_RJH_X4WXN_Z+K\0/\ P!\/?_*J
M@ \+_LX^&O",G@E[.^U60^$M4U?5['SYHCYDVHM<M.LN(QE5-U)L"[2,+DM@
MY\P_X91U+0_BUX3A\,>(_$WAKPKI?AC7+5O$6FW5E]M6[O=4M[KR"LL+JR$&
MX(/E';Y:'<'"D^G_ /"F_%W_ $77X@?^ /A[_P"55'_"F_%W_1=?B!_X ^'O
M_E50!5UK]F7P[-I?AFU\,:SKG@"X\/Z/)X?L]0\.S0&X;3G";[>0W4,ZN"T4
M;^85\P,I(<;FW5M:_97\.:II5EX>M=?\1Z/X$@M;&SF\&6MU#-IEQ#:,IB4^
M?#)-%D(@<P2Q%]NXDN2QT_\ A3?B[_HNOQ _\ ?#W_RJH_X4WXN_Z+K\0/\
MP!\/?_*J@"EJ?[+OA?4M0:^.I:O!=-XME\7LR-;N&GEL_L4UL5>%@;>2 LI7
M&\;B5=2!C5^%_P "[?X5W-F+7QEXLUK2--LO[-TG1-5OHC9:=;97;&BQ11M,
M55$17N6F=57 8;F+5_\ A3?B[_HNOQ _\ ?#W_RJH_X4WXN_Z+K\0/\ P!\/
M?_*J@!OQ&_9N\,_$^Y\=SZK?:M;OXR\.V_AG4!9S1*(K:&2>17BW1MB0FY?)
M;<,!?E'.;WB;X ^%/&.N>.=1UE+N_3QCHEKH.IV33!81;P-<,C1E5#I)FY<[
MMQQM0C:1DT_^%-^+O^BZ_$#_ , ?#W_RJH_X4WXN_P"BZ_$#_P  ?#W_ ,JJ
M .;G_9!T+5KS4]3U[QGXP\1^(;RSL+6'7-0NK5;JQ:RN'N+2:#R;:.-9(Y)&
M/*,K\[U?<^[5O?V8=&\30V-OXS\4^)_B!I\-])J-UIOB2YMY;._G,8CB,L$<
M$<:I"!N2.)8X]Y\QE>0!Q?\ ^%-^+O\ HNOQ _\  'P]_P#*JC_A3?B[_HNO
MQ _\ ?#W_P JJ .S^'O@N/X=^"])\-0ZKJ6M6VF0_9H+S5Y4EN3$"?+1W5%W
M[%VH&(W$("Q9BS'HJ\J_X4WXN_Z+K\0/_ 'P]_\ *JC_ (4WXN_Z+K\0/_ '
MP]_\JJ /5:*\J_X4WXN_Z+K\0/\ P!\/?_*JC_A3?B[_ *+K\0/_  !\/?\
MRJH ]5HKRK_A3?B[_HNOQ _\ ?#W_P JJ/\ A3?B[_HNOQ _\ ?#W_RJH ])
MUC1M/\0Z;<:=JMC;:GI]PNV:TO(5EBD&<X9&!!&0.H[5Q_\ PH/X8_\ 1./"
M7_@CM?\ XW6-_P *;\7?]%U^('_@#X>_^55'_"F_%W_1=?B!_P" /A[_ .55
M9RIPF[RBF93HTZCO.*?JCR__ (=U?#7^WO[5&J^(A-]I^U?9]]E]GW;MVWRO
MLNS9GC9C;CC&*]I_X4'\,?\ HG'A+_P1VO\ \;K&_P"%-^+O^BZ_$#_P!\/?
M_*JC_A3?B[_HNOQ _P# 'P]_\JJYJ>"PU&_)32N<='+L)0O[.DE?R-?6/@?X
M3U*'PI;V6GQ^'K/PWKD?B"TM-$@AM87N4BEB_>($P5*S-G&"2%YXP:NO? 7P
MWXB\3>,-6N9;^.W\8:(="U_28946TU"/8T:S.-F\3+$[1!U=<H0&#;$*TO\
MA3?B[_HNOQ _\ ?#W_RJH_X4WXN_Z+K\0/\ P!\/?_*JNQ)15D>A&*BK15D8
M6C?LIV6CWDVI'XB^.KK7SI=GI%OK3WUK#<6UO:SF: *L-LD3X8L&66-UD5B)
M%?-:NE_LYV^AZ3=KIGCKQ=IWB*^UA]<OO$UK/:)=WER\"VY\Z#[-]CD3R4C4
M(;? *!QB3+FQ_P *;\7?]%U^('_@#X>_^55'_"F_%W_1=?B!_P" /A[_ .55
M,9SME^R%X?\ #]K;_P#",>+O%GA#46L;C3]3U71;FUCNM7CFN9;IVG+V[K'(
M)KBX=)+=86C\YPA50H79\8?LQ>%O&VOWFKWNH:U'<75OHELZQW:N-NEWK7EL
M=TB.[,TCD2,S$LO3:V6-G_A3?B[_ *+K\0/_  !\/?\ RJH_X4WXN_Z+K\0/
M_ 'P]_\ *J@"?XJ? U/BEXJ\+Z__ ,)GXB\,WGAPS/8Q:2FGRP":0!3.T=W:
M3J950%%< %%>0+C>V6>-/@2GCC2O#HN_&WB>S\2:&EQ#!XKL#8Q:A+%<)LGC
MD7[*;?:X$9^6%2#$C*5(R8_^%-^+O^BZ_$#_ , ?#W_RJH_X4WXN_P"BZ_$#
M_P  ?#W_ ,JJ ,OQ5^R?X.\266D:?:7FK^&](L]#B\,7>F:1-"(-4TF-U9+*
MY\V*1M@PXW1-')B:0;_FK4^*7[.F@?%;6%O[S5=8T9;C3?[%U6STF2%(-8T[
MS1+]DN1)$Y$>?,&8C&^V:0;\-P?\*;\7?]%U^('_ ( ^'O\ Y54?\*;\7?\
M1=?B!_X ^'O_ )54 >IHBQHJ(H55& JC  ]*=7E7_"F_%W_1=?B!_P" /A[_
M .55'_"F_%W_ $77X@?^ /A[_P"55 'JM%>5?\*;\7?]%U^('_@#X>_^55'_
M  IOQ=_T77X@?^ /A[_Y54 >JT5Y5_PIOQ=_T77X@?\ @#X>_P#E51_PIOQ=
M_P!%U^('_@#X>_\ E50!WGBOP9X?\>:3_9?B70M-\1:9O67['JUG'=0[QG#;
M) 1D9.#CO7!:M^RA\&-9TN\L)_A5X/BANH7@>2TT2VMYE5@02DL:*Z-SPRD,
M#R"#2_\ "F_%W_1=?B!_X ^'O_E51_PIOQ=_T77X@?\ @#X>_P#E57H8?,,9
MA4HX>M*"6NDFM>^C(<8RW1YQ\*?^"<_P4^%.L7^HKH$GBZ6Z78D/BL0W\%LI
M.2(XC&%ST^9@S #@C)SZA_PS'\'?^B3>!_\ PF[/_P"-U6_X4WXN_P"BZ_$#
M_P  ?#W_ ,JJ/^%-^+O^BZ_$#_P!\/?_ "JKT,5Q#F^-JNMB,7.4GUYG_F3&
MC3BK**+WBSX(V.N>(-.U[0/$&M> -<LK :2+WPV+4"6R5MZ6[P7,$T)5&)9"
M(PR;F"L S Y"_LTZ'I^DZ&FA^(/$'ASQ!I5S>7H\46,MM)J%U->'=>O.)X)(
M'\]PKLOE!59$\L1A5 L_\*;\7?\ 1=?B!_X ^'O_ )54?\*;\7?]%U^('_@#
MX>_^55> VV[LU,'PG^Q_X.\%^';?0]-U7Q!_9</B.Q\6""XO(Y<ZE;LKO+N:
M+($[HKR1J0@.?+6+)S[G7E7_  IOQ=_T77X@?^ /A[_Y54?\*;\7?]%U^('_
M ( ^'O\ Y54@'ZQ\ +'Q%XMBU/5_%GBC5="AU:+7(O"=Y=PRZ;'>QX:.0,8?
MM.Q)%$JP^?Y2N!A  %#%_9UT!?B5_P )<-5UKR/[6.O_ /".F:(Z9_:?V;[-
M]LV^5YN_R_X/-\O=\^S?\U'_  IOQ=_T77X@?^ /A[_Y54?\*;\7?]%U^('_
M ( ^'O\ Y54 '@7]G70/ /C)-?L]5UJ^BLQ?#2='OIHGLM(^V3+-=?9PL2R'
M>ZC_ %KR;%)5-BDBMKXB?".R\?:QHFN6^M:MX4\4:*)H[+7M"> 7*0S*!- Z
M3Q2PRQ/M1BDD; -&C+M90:Q?^%-^+O\ HNOQ _\  'P]_P#*JC_A3?B[_HNO
MQ _\ ?#W_P JJ (3^S3X;?PE<:7)JFLRZW<:U'XDE\6230G56U2,KY=UGRO)
MRJHL8B\KR1&/+\O;D4[PO^S;X=\+^(=!U\:GK&I:]IFI:AJ\^I7LL/F:G=WD
M"P2RW CB1.(DC1%B6-5$:C&!4G_"F_%W_1=?B!_X ^'O_E51_P *;\7?]%U^
M('_@#X>_^55 &;:_LJ>$[/PWX3T1-1UHVGAK3]5TVT=IX=[QWZ%)S(?*P64'
MY2  .X:KZ_LV>&5MWA%]JVU_!2^!"?.BS]A 8"3_ %?^N^8_-]W_ &*?_P *
M;\7?]%U^('_@#X>_^55'_"F_%W_1=?B!_P" /A[_ .55 %+Q-^S'HGB!M!>U
M\2^)/#TVF>'G\*S3:3/;A]1TQO*W03F6!]IS$")(?*D7>^UAD8HP_LB^#H?
M?BCPFNI:X=.\1:)I>@W4IGA\Y(+"#R86C/E8#LHRQ(()Z!>E;?\ PIOQ=_T7
M7X@?^ /A[_Y54?\ "F_%W_1=?B!_X ^'O_E50!4N/V9-!6=[_2M?U[0-?77[
M_P 16NN6$ELUS:37B;+F)%F@DB:%EP-DD;D$*P.Y585->_98TCQ!_9CR^,_&
M4-U#HD_A[4KU=0AEN=9LYI!+*ES++"[(6?<0UL82@<JFU515UO\ A3?B[_HN
MOQ _\ ?#W_RJH_X4WXN_Z+K\0/\ P!\/?_*J@# F_9"\+S:/?Z6=?\1+8:AH
M.CZ#>0K):C[0NFR![6Y9OL^1-@%6VD1E6/[L$*1LS?LU^'9_&C:T=6UH:3)K
MJ>)Y?"PE@_LR3545=MV<Q>>&#(DGEB81>8H?9N))F_X4WXN_Z+K\0/\ P!\/
M?_*JC_A3?B[_ *+K\0/_  !\/?\ RJH 6;]G/PU-!<Q-?:J%N/&47CAL2Q9%
M]&\;K&/W?^IS$N5^]@GY_1?"/P L?#/C33/$M]XL\3>+;K1K:ZL]%A\0W,%P
M-,AN&C,JI,L*3S$B&)=]S+,V$^\222W_ (4WXN_Z+K\0/_ 'P]_\JJ/^%-^+
MO^BZ_$#_ , ?#W_RJH ;KGP%EO?B)KWC/0OB)XL\&ZEKEM:6U_!H\6ERP2K;
M"01'%W93LI E?.U@#GIP*J_$#X!2>)M-74+;QAXFA\6V^B7&C3:M:O913ZQ;
M.=_D7*_9_)4%QQ)"D4B;GV.FYLW/^%-^+O\ HNOQ _\  'P]_P#*JC_A3?B[
M_HNOQ _\ ?#W_P JJ .%\$?LLG4_A3\+(M<UC7_!GBO1O =KX1UJ'0[JU(N;
M<P6XN+65GBF4;9(6"RP,CC<VV3D&L;Q]^R"NDZ#X9T_P/>ZX\W]O^&FO;W[;
M;I/8V>F6_P!F2YB+(JF145792KAF_@*Y6O4_^%-^+O\ HNOQ _\  'P]_P#*
MJC_A3?B[_HNOQ _\ ?#W_P JJ (_#'[-OA[PWXFT/Q*^K:UJ_B33M0OM5N-5
MU"6#S=2N;JW6V=[@1Q(F$ACC1%B6-5$:\'G,O@W]G/PWX(_X5[]AOM5E_P"$
M(BOX=.^T2Q-YHN_];YV(QN(_AV[<=\TG_"F_%W_1=?B!_P" /A[_ .55'_"F
M_%W_ $77X@?^ /A[_P"55 &=I7[+^D:-#=Z;:^,/%T7A-X=0AM?"L=]"FG67
MVQ7$I0+")90OFR&..>26.,L"J HFUGB3]D_PAXHT2'2[R^U@6\/@QO!"-'-"
M&%F6A<3<Q$>>&MXR&QLZY0UJ?\*;\7?]%U^('_@#X>_^55'_  IOQ=_T77X@
M?^ /A[_Y54 >F:9:RV&FVEM/>SZE-#$D;WETL8EG8* 9'$:J@9B,G:JKDG
MXJS7E7_"F_%W_1=?B!_X ^'O_E51_P *;\7?]%U^('_@#X>_^55 'JM%>5?\
M*;\7?]%U^('_ ( ^'O\ Y54?\*;\7?\ 1=?B!_X ^'O_ )54 >JT5Y5_PIOQ
M=_T77X@?^ /A[_Y54?\ "F_%W_1=?B!_X ^'O_E50 ?!O_DHGQU_['.V_P#4
M>T:O5:XKX8_#%?AK'XCDD\1:QXJU+7]3&JW^I:T+59GE%K;VJJ%MH(8U416L
M0P$SG)).:[6@#RKQ'_R=-\//^Q,\2_\ I=H5>JUY5XC_ .3IOAY_V)GB7_TN
MT*O5: /-?B-\.?%6O>/O#/B[PCXFT?P_J6CZ9J.E21:UH<NIPSQ7<ME*6 CN
M[8HRM8ISE@0YX& :J?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5?\(Y\;_\
MHH7P_P#_  @[[_Y<T?\ ".?&_P#Z*%\/_P#P@[[_ .7->JT4 >5>%_AIXW_X
M6GI?C+QEXO\ #^M?V7HU_I%I9:%X<GTW_C[GLI7DD>6^N-VW["@"A5^^Q).
(*]5HHH __]D!

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>13
<FILENAME>R1.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252659500576">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Cover - USD ($)<br> $ in Millions</strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Feb. 10, 2023</div></th>
<th class="th"><div>Jul. 01, 2022</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_CoverAbstract', window );"><strong>Cover [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentType', window );">Document Type</a></td>
<td class="text">10-K<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentAnnualReport', window );">Document Annual Report</a></td>
<td class="text">true<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentPeriodEndDate', window );">Document Period End Date</a></td>
<td class="text">Dec. 31,  2022<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_CurrentFiscalYearEndDate', window );">Current Fiscal Year End Date</a></td>
<td class="text">--12-31<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentTransitionReport', window );">Document Transition Report</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityFileNumber', window );">Entity File Number</a></td>
<td class="text">001-34674<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityRegistrantName', window );">Entity Registrant Name</a></td>
<td class="text">Calix, Inc.<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityIncorporationStateCountryCode', window );">Entity Incorporation, State or Country Code</a></td>
<td class="text">DE<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityTaxIdentificationNumber', window );">Entity Tax Identification Number</a></td>
<td class="text">68-0438710<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressAddressLine1', window );">Entity Address, Address Line One</a></td>
<td class="text">2777 Orchard Parkway<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressCityOrTown', window );">Entity Address, City or Town</a></td>
<td class="text">San Jose<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressStateOrProvince', window );">Entity Address, State or Province</a></td>
<td class="text">CA<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressPostalZipCode', window );">Entity Address, Postal Zip Code</a></td>
<td class="text">95134<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_CityAreaCode', window );">City Area Code</a></td>
<td class="text">408<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_LocalPhoneNumber', window );">Local Phone Number</a></td>
<td class="text">514-3000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_Security12bTitle', window );">Title of 12(b) Security</a></td>
<td class="text">Common Stock, $0.025 par value<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_TradingSymbol', window );">Trading Symbol</a></td>
<td class="text">CALX<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_SecurityExchangeName', window );">Security Exchange Name</a></td>
<td class="text">NYSE<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityWellKnownSeasonedIssuer', window );">Entity Well-known Seasoned Issuer</a></td>
<td class="text">No<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityVoluntaryFilers', window );">Entity Voluntary Filers</a></td>
<td class="text">No<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityCurrentReportingStatus', window );">Entity Current Reporting Status</a></td>
<td class="text">Yes<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityInteractiveDataCurrent', window );">Entity Interactive Data Current</a></td>
<td class="text">Yes<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityFilerCategory', window );">Entity Filer Category</a></td>
<td class="text">Large Accelerated Filer<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntitySmallBusiness', window );">Entity Small Business</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityEmergingGrowthCompany', window );">Entity Emerging Growth Company</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_IcfrAuditorAttestationFlag', window );">ICFR Auditor Attestation Flag</a></td>
<td class="text">true<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityShellCompany', window );">Entity Shell Company</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityPublicFloat', window );">Entity Public Float</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 2,002<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityCommonStockSharesOutstanding', window );">Entity Common Stock, Shares Outstanding</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">66,139,488<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityCentralIndexKey', window );">Entity Central Index Key</a></td>
<td class="text">0001406666<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_AmendmentFlag', window );">Amendment Flag</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentFiscalYearFocus', window );">Document Fiscal Year Focus</a></td>
<td class="text">2022<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentFiscalPeriodFocus', window );">Document Fiscal Period Focus</a></td>
<td class="text">FY<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentsIncorporatedByReferenceTextBlock', window );">Documents Incorporated by Reference</a></td>
<td class="text"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%">DOCUMENTS INCORPORATED BY REFERENCE</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">Portions of the registrant&#8217;s definitive proxy statement for its 2023 annual meeting of stockholders are incorporated by reference in Items 10, 11, 12, 13 and 14 of Part&#160;III.</span></div><span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_AmendmentFlag">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the XBRL content amends previously-filed or accepted submission.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_AmendmentFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_CityAreaCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Area code of city</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_CityAreaCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_CoverAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Cover page.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_CoverAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_CurrentFiscalYearEndDate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>End date of current fiscal year in the format --MM-DD.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_CurrentFiscalYearEndDate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:gMonthDayItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentAnnualReport">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true only for a form used as an annual report.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentAnnualReport</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentFiscalPeriodFocus">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Fiscal period values are FY, Q1, Q2, and Q3.  1st, 2nd and 3rd quarter 10-Q or 10-QT statements have value Q1, Q2, and Q3 respectively, with 10-K, 10-KT or other fiscal year statements having FY.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentFiscalPeriodFocus</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:fiscalPeriodItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentFiscalYearFocus">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>This is focus fiscal year of the document report in YYYY format. For a 2006 annual report, which may also provide financial information from prior periods, fiscal 2006 should be given as the fiscal year focus. Example: 2006.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentFiscalYearFocus</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:gYearItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentPeriodEndDate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>For the EDGAR submission types of Form 8-K: the date of the report, the date of the earliest event reported; for the EDGAR submission types of Form N-1A: the filing date; for all other submission types: the end of the reporting or transition period.  The format of the date is YYYY-MM-DD.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentPeriodEndDate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:dateItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentTransitionReport">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true only for a form used as a transition report.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Forms 10-K, 10-Q, 20-F<br> -Number 240<br> -Section 13<br> -Subsection a-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentTransitionReport</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentType">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The type of document being provided (such as 10-K, 10-Q, 485BPOS, etc). The document type is limited to the same value as the supporting SEC submission type, or the word 'Other'.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentType</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:submissionTypeItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentsIncorporatedByReferenceTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Documents incorporated by reference.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-23<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentsIncorporatedByReferenceTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressAddressLine1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Address Line 1 such as Attn, Building Name, Street Name</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressAddressLine1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressCityOrTown">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Name of the City or Town</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressCityOrTown</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressPostalZipCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Code for the postal or zip code</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressPostalZipCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressStateOrProvince">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Name of the state or province.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressStateOrProvince</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:stateOrProvinceItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCentralIndexKey">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityCentralIndexKey</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:centralIndexKeyItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCommonStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityCommonStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCurrentReportingStatus">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicate 'Yes' or 'No' whether registrants (1) have filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that registrants were required to file such reports), and (2) have been subject to such filing requirements for the past 90 days. This information should be based on the registrant's current or most recent filing containing the related disclosure.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityCurrentReportingStatus</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:yesNoItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityEmergingGrowthCompany">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicate if registrant meets the emerging growth company criteria.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityEmergingGrowthCompany</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityFileNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Commission file number. The field allows up to 17 characters. The prefix may contain 1-3 digits, the sequence number may contain 1-8 digits, the optional suffix may contain 1-4 characters, and the fields are separated with a hyphen.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityFileNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:fileNumberItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityFilerCategory">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicate whether the registrant is one of the following: Large Accelerated Filer, Accelerated Filer, Non-accelerated Filer. Definitions of these categories are stated in Rule 12b-2 of the Exchange Act. This information should be based on the registrant's current or most recent filing containing the related disclosure.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityFilerCategory</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:filerCategoryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityIncorporationStateCountryCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Two-character EDGAR code representing the state or country of incorporation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityIncorporationStateCountryCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:edgarStateCountryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityInteractiveDataCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T during the preceding 12 months (or for such shorter period that the registrant was required to submit such files).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-T<br> -Number 232<br> -Section 405<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityInteractiveDataCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:yesNoItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityPublicFloat">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The aggregate market value of the voting and non-voting common equity held by non-affiliates computed by reference to the price at which the common equity was last sold, or the average bid and asked price of such common equity, as of the last business day of the registrant's most recently completed second fiscal quarter.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityPublicFloat</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityRegistrantName">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityRegistrantName</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityShellCompany">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityShellCompany</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntitySmallBusiness">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicates that the company is a Smaller Reporting Company (SRC).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntitySmallBusiness</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityTaxIdentificationNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityTaxIdentificationNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:employerIdItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityVoluntaryFilers">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicate 'Yes' or 'No' if the registrant is not required to file reports pursuant to Section 13 or Section 15(d) of the Act.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityVoluntaryFilers</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:yesNoItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityWellKnownSeasonedIssuer">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicate 'Yes' or 'No' if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act. Is used on Form Type: 10-K, 10-Q, 8-K, 20-F, 6-K, 10-K/A, 10-Q/A, 20-F/A, 6-K/A, N-CSR, N-Q, N-1A.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Securities Act<br> -Number 230<br> -Section 405<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityWellKnownSeasonedIssuer</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:yesNoItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_IcfrAuditorAttestationFlag">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_IcfrAuditorAttestationFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_LocalPhoneNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Local phone number for entity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_LocalPhoneNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_Security12bTitle">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Title of a 12(b) registered security.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_Security12bTitle</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:securityTitleItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_SecurityExchangeName">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Name of the Exchange on which a security is registered.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection d1-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_SecurityExchangeName</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:edgarExchangeCodeItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_TradingSymbol">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Trading symbol of an instrument as listed on an exchange.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_TradingSymbol</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:tradingSymbolItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>14
<FILENAME>R2.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252659461456">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Audit Information<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_AuditInformationAbstract', window );"><strong>Audit Information [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_AuditorName', window );">Auditor Name</a></td>
<td class="text">KPMG LLP<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_AuditorLocation', window );">Auditor Location</a></td>
<td class="text">Santa Clara, California<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_AuditorFirmId', window );">Auditor Firm ID</a></td>
<td class="text">185<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_AuditInformationAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Audit Information</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_AuditInformationAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_AuditorFirmId">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>PCAOB issued Audit Firm Identifier</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_AuditorFirmId</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:nonemptySequenceNumberItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_AuditorLocation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_AuditorLocation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:internationalNameItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_AuditorName">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_AuditorName</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:internationalNameItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>15
<FILENAME>R3.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252654427040">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Balance Sheets - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AssetsCurrentAbstract', window );"><strong>Current assets:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAtCarryingValue', window );">Cash and cash equivalents</a></td>
<td class="nump">$ 79,073<span></span>
</td>
<td class="nump">$ 51,333<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">162,642<span></span>
</td>
<td class="nump">153,002<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccountsReceivableNetCurrent', window );">Accounts receivable, net</a></td>
<td class="nump">93,804<span></span>
</td>
<td class="nump">85,219<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InventoryNet', window );">Inventory</a></td>
<td class="nump">149,160<span></span>
</td>
<td class="nump">88,880<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PrepaidExpenseAndOtherAssetsCurrent', window );">Prepaid expenses and other current assets</a></td>
<td class="nump">62,691<span></span>
</td>
<td class="nump">30,811<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AssetsCurrent', window );">Total current assets</a></td>
<td class="nump">547,370<span></span>
</td>
<td class="nump">409,245<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Property and equipment, net</a></td>
<td class="nump">25,834<span></span>
</td>
<td class="nump">21,783<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseRightOfUseAsset', window );">Right-of-use operating leases</a></td>
<td class="nump">9,283<span></span>
</td>
<td class="nump">12,182<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxAssetsNet', window );">Deferred tax assets</a></td>
<td class="nump">167,031<span></span>
</td>
<td class="nump">168,962<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill</a></td>
<td class="nump">116,175<span></span>
</td>
<td class="nump">116,175<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherAssetsNoncurrent', window );">Other assets</a></td>
<td class="nump">19,142<span></span>
</td>
<td class="nump">13,685<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Assets', window );">Total assets</a></td>
<td class="nump">884,835<span></span>
</td>
<td class="nump">742,032<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LiabilitiesCurrentAbstract', window );"><strong>Current liabilities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccountsPayableCurrent', window );">Accounts payable</a></td>
<td class="nump">41,407<span></span>
</td>
<td class="nump">29,061<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccruedLiabilitiesCurrent', window );">Accrued liabilities</a></td>
<td class="nump">90,474<span></span>
</td>
<td class="nump">71,597<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ContractWithCustomerLiabilityCurrent', window );">Deferred revenue</a></td>
<td class="nump">33,541<span></span>
</td>
<td class="nump">27,478<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LiabilitiesCurrent', window );">Total current liabilities</a></td>
<td class="nump">165,422<span></span>
</td>
<td class="nump">128,136<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ContractWithCustomerLiabilityNoncurrent', window );">Long-term portion of deferred revenue</a></td>
<td class="nump">25,072<span></span>
</td>
<td class="nump">22,016<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityNoncurrent', window );">Operating leases</a></td>
<td class="nump">8,442<span></span>
</td>
<td class="nump">12,376<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherLiabilitiesNoncurrent', window );">Other long-term liabilities</a></td>
<td class="nump">6,332<span></span>
</td>
<td class="nump">11,076<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Liabilities', window );">Total liabilities</a></td>
<td class="nump">205,268<span></span>
</td>
<td class="nump">173,604<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommitmentsAndContingencies', window );">Commitments and contingencies (See Note 5)</a></td>
<td class="text"> <span></span>
</td>
<td class="text"> <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquityAbstract', window );"><strong>Stockholders&#8217; equity:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PreferredStockValue', window );">Preferred stock, $0.025 par value; 5,000 shares authorized; no shares issued and outstanding as of December 31, 2022 and 2021</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockValue', window );">Common stock, $0.025 par value; 100,000 shares authorized; 65,735 shares issued and outstanding as of December 31, 2022, and 64,274 shares issued and outstanding as of December 31, 2021</a></td>
<td class="nump">1,644<span></span>
</td>
<td class="nump">1,607<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AdditionalPaidInCapitalCommonStock', window );">Additional paid-in capital</a></td>
<td class="nump">1,070,100<span></span>
</td>
<td class="nump">997,855<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax', window );">Accumulated other comprehensive loss</a></td>
<td class="num">(2,473)<span></span>
</td>
<td class="num">(320)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RetainedEarningsAccumulatedDeficit', window );">Accumulated deficit</a></td>
<td class="num">(389,704)<span></span>
</td>
<td class="num">(430,714)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Total stockholders&#8217; equity</a></td>
<td class="nump">679,567<span></span>
</td>
<td class="nump">568,428<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LiabilitiesAndStockholdersEquity', window );">Total liabilities and stockholders' equity</a></td>
<td class="nump">$ 884,835<span></span>
</td>
<td class="nump">$ 742,032<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsPayableCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.19(a))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountsPayableCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsReceivableNetCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=124259787&amp;loc=d3e4428-111522<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 45<br> -Paragraph 9<br> -URI https://asc.fasb.org/extlink&amp;oid=124259787&amp;loc=d3e4531-111522<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountsReceivableNetCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedLiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of obligations incurred and payable, pertaining to costs that are statutory in nature, are incurred on contractual obligations, or accumulate over time and for which invoices have not yet been received or will not be rendered. Examples include taxes, interest, rent and utilities. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedLiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Accumulated change in equity from transactions and other events and circumstances from non-owner sources, net of tax effect, at period end. Excludes Net Income (Loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners. Includes foreign currency translation items, certain pension adjustments, unrealized gains and losses on certain investments in debt and equity securities, other than temporary impairment (OTTI) losses related to factors other than credit losses on available-for-sale and held-to-maturity debt securities that an entity does not intend to sell and it is not more likely than not that the entity will be required to sell before recovery of the amortized cost basis, as well as changes in the fair value of derivatives related to the effective portion of a designated cash flow hedge.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(4))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=d3e637-108580<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(23)(a)(3))<br> -URI https://asc.fasb.org/extlink&amp;oid=126734703&amp;loc=d3e572229-122910<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669686-108580<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -URI https://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(ii)<br> -URI https://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=d3e681-108580<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdditionalPaidInCapitalCommonStock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Value received from shareholders in common stock-related transactions that are in excess of par value or stated value and amounts received from other stock-related transactions. Includes only common stock transactions (excludes preferred stock transactions). May be called contributed capital, capital in excess of par, capital surplus, or paid-in capital.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdditionalPaidInCapitalCommonStock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Assets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Sum of the carrying amounts as of the balance sheet date of all assets that are recognized. Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(11))<br> -URI https://asc.fasb.org/extlink&amp;oid=126897435&amp;loc=d3e534808-122878<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(12))<br> -URI https://asc.fasb.org/extlink&amp;oid=126734703&amp;loc=d3e572229-122910<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 9: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 14: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -URI https://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (d)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=116870748&amp;loc=SL6758485-165988<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(18))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8906-108599<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Assets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Sum of the carrying amounts as of the balance sheet date of all assets that are expected to be realized in cash, sold, or consumed within one year (or the normal operating cycle, if longer). Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=116870748&amp;loc=SL6758485-165988<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 14: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -URI https://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(9))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AssetsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsCurrentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AssetsCurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAtCarryingValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3044-108585<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAtCarryingValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingencies">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Represents the caption on the face of the balance sheet to indicate that the entity has entered into (1) purchase or supply arrangements that will require expending a portion of its resources to meet the terms thereof, and (2) is exposed to potential losses or, less frequently, gains, arising from (a) possible claims against a company's resources due to future performance under contract terms, and (b) possible losses or likely gains from uncertainties that will ultimately be resolved when one or more future events that are deemed likely to occur do occur or fail to occur.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.25)<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03.(a),19)<br> -URI https://asc.fasb.org/extlink&amp;oid=126734703&amp;loc=d3e572229-122910<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03.17)<br> -URI https://asc.fasb.org/extlink&amp;oid=126897435&amp;loc=d3e534808-122878<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommitmentsAndContingencies</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Aggregate par or stated value of issued nonredeemable common stock (or common stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable common shares, par value and other disclosure concepts are in another section within stockholders' equity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=126919976&amp;loc=SL49130531-203044<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126919976&amp;loc=SL49130532-203044<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130549-203045<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ContractWithCustomerLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerLiabilityNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126919976&amp;loc=SL49130532-203044<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=126919976&amp;loc=SL49130531-203044<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130549-203045<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ContractWithCustomerLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount excluding accrued interest, of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxAssetsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, with jurisdictional netting.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=d3e31931-109318<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -URI https://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=d3e31917-109318<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Goodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13816-109267<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(10)(1))<br> -URI https://asc.fasb.org/extlink&amp;oid=126897435&amp;loc=d3e534808-122878<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (h)<br> -URI https://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13816-109267<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 55<br> -Paragraph 24<br> -URI https://asc.fasb.org/extlink&amp;oid=122137925&amp;loc=d3e14258-109268<br><br>Reference 5: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=99380562&amp;loc=d3e13770-109266<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(15))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Liabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Sum of the carrying amounts as of the balance sheet date of all liabilities that are recognized. Liabilities are probable future sacrifices of economic benefits arising from present obligations of an entity to transfer assets or provide services to other entities in the future.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.19-26)<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (d)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8906-108599<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=116870748&amp;loc=SL6758485-165988<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -URI https://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Liabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesAndStockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(23))<br> -URI https://asc.fasb.org/extlink&amp;oid=126897435&amp;loc=d3e534808-122878<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(25))<br> -URI https://asc.fasb.org/extlink&amp;oid=126734703&amp;loc=d3e572229-122910<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(32))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesAndStockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Total obligations incurred as part of normal operations that are expected to be paid during the following twelve months or within one business cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=116870748&amp;loc=SL6758485-165988<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -URI https://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 5<br> -URI https://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6904-107765<br><br>Reference 21: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.21)<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesCurrentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesCurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseRightOfUseAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's right to use underlying asset under operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherAssetsNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of noncurrent assets classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(17))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherAssetsNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherLiabilitiesNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.24)<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherLiabilitiesNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Aggregate par or stated value of issued nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable preferred shares, par value and other disclosure concepts are in another section within stockholders' equity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PrepaidExpenseAndOtherAssetsCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(9))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PrepaidExpenseAndOtherAssetsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -URI https://asc.fasb.org/extlink&amp;oid=126734703&amp;loc=d3e572229-122910<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 360<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=124429447&amp;loc=SL124453093-239630<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetainedEarningsAccumulatedDeficit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The cumulative amount of the reporting entity's undistributed earnings or deficit.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(3))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(23)(a)(4))<br> -URI https://asc.fasb.org/extlink&amp;oid=126734703&amp;loc=d3e572229-122910<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -URI https://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI https://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(i)<br> -URI https://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetainedEarningsAccumulatedDeficit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -URI https://asc.fasb.org/extlink&amp;oid=122038336&amp;loc=d3e74512-122707<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquityAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockholdersEquityAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>16
<FILENAME>R4.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252659389168">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Balance Sheets (Parenthetical) - $ / shares<br></strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StatementOfFinancialPositionAbstract', window );"><strong>Statement of Financial Position [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PreferredStockParOrStatedValuePerShare', window );">Preferred stock, par value (in dollars per share)</a></td>
<td class="nump">$ 0.025<span></span>
</td>
<td class="nump">$ 0.025<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PreferredStockSharesAuthorized', window );">Preferred stock, shares authorized (in shares)</a></td>
<td class="nump">5,000,000<span></span>
</td>
<td class="nump">5,000,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PreferredStockSharesIssued', window );">Preferred stock, shares issued (in shares)</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PreferredStockSharesOutstanding', window );">Preferred stock, shares outstanding (in shares)</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockParOrStatedValuePerShare', window );">Common stock, par value (in dollars per share)</a></td>
<td class="nump">$ 0.025<span></span>
</td>
<td class="nump">$ 0.025<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockSharesAuthorized', window );">Common stock, shares authorized (in shares)</a></td>
<td class="nump">100,000,000<span></span>
</td>
<td class="nump">100,000,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockSharesIssued', window );">Common stock, shares issued (in shares)</a></td>
<td class="nump">65,735,000<span></span>
</td>
<td class="nump">64,274,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Common stock, shares outstanding (in shares)</a></td>
<td class="nump">65,735,000<span></span>
</td>
<td class="nump">64,274,000<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockParOrStatedValuePerShare">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Face amount or stated value per share of common stock.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockParOrStatedValuePerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesAuthorized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The maximum number of common shares permitted to be issued by an entity's charter and bylaws.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesIssued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Total number of common shares of an entity that have been sold or granted to shareholders (includes common shares that were issued, repurchased and remain in the treasury). These shares represent capital invested by the firm's shareholders and owners, and may be all or only a portion of the number of shares authorized. Shares issued include shares outstanding and shares held in the treasury.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126973232&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockParOrStatedValuePerShare">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126973232&amp;loc=SL123496158-112644<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockParOrStatedValuePerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesAuthorized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The maximum number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) permitted to be issued by an entity's charter and bylaws.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesIssued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Total number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) issued to shareholders (includes related preferred shares that were issued, repurchased, and remain in the treasury). May be all or portion of the number of preferred shares authorized. Excludes preferred shares that are classified as debt.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126973232&amp;loc=SL123496158-112644<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockSharesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Aggregate share number for all nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer) held by stockholders. Does not include preferred shares that have been repurchased.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementOfFinancialPositionAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementOfFinancialPositionAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>17
<FILENAME>R5.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252659554304">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Comprehensive Income (Loss) - USD ($)<br> shares in Thousands, $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeStatementAbstract', window );"><strong>Income Statement [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 867,827<span></span>
</td>
<td class="nump">$ 679,394<span></span>
</td>
<td class="nump">$ 541,239<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CostOfGoodsAndServicesSold', window );">Cost of revenue</a></td>
<td class="nump">432,399<span></span>
</td>
<td class="nump">322,807<span></span>
</td>
<td class="nump">274,220<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_GrossProfit', window );">Gross profit</a></td>
<td class="nump">435,428<span></span>
</td>
<td class="nump">356,587<span></span>
</td>
<td class="nump">267,019<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingExpensesAbstract', window );"><strong>Operating expenses:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SellingAndMarketingExpense', window );">Sales and marketing</a></td>
<td class="nump">174,549<span></span>
</td>
<td class="nump">125,909<span></span>
</td>
<td class="nump">94,185<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ResearchAndDevelopmentExpense', window );">Research and development</a></td>
<td class="nump">131,994<span></span>
</td>
<td class="nump">101,747<span></span>
</td>
<td class="nump">85,258<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_GeneralAndAdministrativeExpense', window );">General and administrative</a></td>
<td class="nump">76,275<span></span>
</td>
<td class="nump">55,779<span></span>
</td>
<td class="nump">44,444<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges (benefit)</a></td>
<td class="nump">0<span></span>
</td>
<td class="num">(786)<span></span>
</td>
<td class="nump">6,286<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingExpenses', window );">Total operating expenses</a></td>
<td class="nump">382,818<span></span>
</td>
<td class="nump">282,649<span></span>
</td>
<td class="nump">230,173<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingIncomeLoss', window );">Operating income</a></td>
<td class="nump">52,610<span></span>
</td>
<td class="nump">73,938<span></span>
</td>
<td class="nump">36,846<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NonoperatingIncomeExpenseAbstract', window );"><strong>Interest and other income (expense), net:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InvestmentIncomeNet', window );">Interest income (expense), net</a></td>
<td class="nump">2,009<span></span>
</td>
<td class="num">(402)<span></span>
</td>
<td class="num">(1,585)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherNonoperatingIncomeExpense', window );">Other expense, net</a></td>
<td class="num">(577)<span></span>
</td>
<td class="num">(882)<span></span>
</td>
<td class="num">(977)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NonoperatingIncomeExpense', window );">Total interest and other income (expense), net</a></td>
<td class="nump">1,432<span></span>
</td>
<td class="num">(1,284)<span></span>
</td>
<td class="num">(2,562)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest', window );">Income before income taxes</a></td>
<td class="nump">54,042<span></span>
</td>
<td class="nump">72,654<span></span>
</td>
<td class="nump">34,284<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxExpenseBenefit', window );">Income taxes</a></td>
<td class="nump">13,032<span></span>
</td>
<td class="num">(165,724)<span></span>
</td>
<td class="nump">800<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 41,010<span></span>
</td>
<td class="nump">$ 238,378<span></span>
</td>
<td class="nump">$ 33,484<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EarningsPerShareBasicAbstract', window );"><strong>Net income per common share:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EarningsPerShareBasic', window );">Basic (in dollars per share)</a></td>
<td class="nump">$ 0.63<span></span>
</td>
<td class="nump">$ 3.77<span></span>
</td>
<td class="nump">$ 0.57<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EarningsPerShareDiluted', window );">Diluted (in dollars per share)</a></td>
<td class="nump">$ 0.60<span></span>
</td>
<td class="nump">$ 3.51<span></span>
</td>
<td class="nump">$ 0.54<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract', window );"><strong>Weighted-average number of shares used to compute net income per common share:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic', window );">Basic (in shares)</a></td>
<td class="nump">65,058<span></span>
</td>
<td class="nump">63,277<span></span>
</td>
<td class="nump">59,074<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding', window );">Diluted (in shares)</a></td>
<td class="nump">68,911<span></span>
</td>
<td class="nump">67,856<span></span>
</td>
<td class="nump">61,998<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 41,010<span></span>
</td>
<td class="nump">$ 238,378<span></span>
</td>
<td class="nump">$ 33,484<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract', window );"><strong>Other comprehensive income (loss), net of tax:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax', window );">Unrealized loss on available-for-sale marketable securities, net</a></td>
<td class="num">(1,521)<span></span>
</td>
<td class="num">(179)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent', window );">Foreign currency translation adjustments, net</a></td>
<td class="num">(632)<span></span>
</td>
<td class="nump">50<span></span>
</td>
<td class="nump">663<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Total other comprehensive income (loss), net of tax</a></td>
<td class="num">(2,153)<span></span>
</td>
<td class="num">(129)<span></span>
</td>
<td class="nump">663<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTax', window );">Comprehensive income</a></td>
<td class="nump">$ 38,857<span></span>
</td>
<td class="nump">$ 238,249<span></span>
</td>
<td class="nump">$ 34,147<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ComprehensiveIncomeNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(22))<br> -URI https://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(24))<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 5<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=d3e557-108580<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(26))<br> -URI https://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669625-108580<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669619-108580<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ComprehensiveIncomeNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CostOfGoodsAndServicesSold">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The aggregate costs related to goods produced and sold and services rendered by an entity during the reporting period. This excludes costs incurred during the reporting period related to financial services rendered and other revenue generating activities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 924<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -URI https://asc.fasb.org/extlink&amp;oid=6472922&amp;loc=d3e499488-122856<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.2(a),(d))<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CostOfGoodsAndServicesSold</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -URI https://asc.fasb.org/extlink&amp;oid=126732423&amp;loc=SL123482106-238011<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1448-109256<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1337-109256<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126732423&amp;loc=SL123482106-238011<br><br>Reference 9: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI https://asc.fasb.org/extlink&amp;oid=128363288&amp;loc=d3e4984-109258<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -URI https://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI https://asc.fasb.org/extlink&amp;oid=128363288&amp;loc=d3e3842-109258<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22644-107794<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1252-109256<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=SL5780133-109256<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -URI https://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareBasicAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareBasicAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareDiluted">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI https://asc.fasb.org/extlink&amp;oid=128363288&amp;loc=d3e4984-109258<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22644-107794<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI https://asc.fasb.org/extlink&amp;oid=128363288&amp;loc=d3e3842-109258<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1252-109256<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=SL5780133-109256<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126732423&amp;loc=SL123482106-238011<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -URI https://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -URI https://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1337-109256<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -URI https://asc.fasb.org/extlink&amp;oid=126732423&amp;loc=SL123482106-238011<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareDiluted</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GeneralAndAdministrativeExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The aggregate total of expenses of managing and administering the affairs of an entity, including affiliates of the reporting entity, which are not directly or indirectly associated with the manufacture, sale or creation of a product or product line.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.4)<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GeneralAndAdministrativeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GrossProfit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8924-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8906-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 9: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 18: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.1,2)<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GrossProfit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8906-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 940<br> -SubTopic 20<br> -Section 25<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=126941158&amp;loc=d3e41242-110953<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(10))<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(8))<br> -URI https://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 235<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-05(b)(2))<br> -URI https://asc.fasb.org/extlink&amp;oid=120399901&amp;loc=d3e537907-122884<br><br>Reference 9: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8924-108599<br><br>Reference 10: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(15))<br> -URI https://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I.7)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32672-109319<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (h)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 20<br> -Section 45<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=123586238&amp;loc=d3e38679-109324<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(9))<br> -URI https://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InvestmentIncomeNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after accretion (amortization) of discount (premium), and investment expense, of interest income and dividend income on nonoperating securities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.7(a),(b))<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.8)<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InvestmentIncomeNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI https://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI https://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126732423&amp;loc=SL123482106-238011<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=124431353&amp;loc=SL124452729-227067<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=SL5780133-109256<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669619-108580<br><br>Reference 25: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8924-108599<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 205<br> -SubTopic 20<br> -Section 50<br> -Paragraph 7<br> -URI https://asc.fasb.org/extlink&amp;oid=109222650&amp;loc=SL51721683-107760<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669625-108580<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8906-108599<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NonoperatingIncomeExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The aggregate amount of income or expense from ancillary business-related activities (that is to say, excluding major activities considered part of the normal operations of the business).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.7)<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NonoperatingIncomeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NonoperatingIncomeExpenseAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NonoperatingIncomeExpenseAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingExpenses">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Generally recurring costs associated with normal operations except for the portion of these expenses which can be clearly related to production and included in cost of sales or services. Includes selling, general and administrative expense.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingExpenses</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingExpensesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingExpensesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The net result for the period of deducting operating expenses from operating revenues.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8924-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8906-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after tax and reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature, attributable to parent entity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 20<br> -URI https://asc.fasb.org/extlink&amp;oid=126929396&amp;loc=SL4569643-111683<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(3)<br> -URI https://asc.fasb.org/extlink&amp;oid=109239629&amp;loc=SL4573702-111684<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 19<br> -URI https://asc.fasb.org/extlink&amp;oid=126929396&amp;loc=SL4569616-111683<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of other comprehensive income (loss) attributable to parent entity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669625-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(3)<br> -URI https://asc.fasb.org/extlink&amp;oid=109239629&amp;loc=SL4573702-111684<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 20<br> -URI https://asc.fasb.org/extlink&amp;oid=126929396&amp;loc=SL4569643-111683<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669619-108580<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 19<br> -URI https://asc.fasb.org/extlink&amp;oid=126929396&amp;loc=SL4569616-111683<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after tax and before adjustment, of unrealized holding gain (loss) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale). Excludes unrealized gain (loss) on investment in debt security measured at amortized cost (held-to-maturity) from transfer to available-for-sale.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (e)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669646-108580<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=d3e637-108580<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherNonoperatingIncomeExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of income (expense) related to nonoperating activities, classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.9)<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherNonoperatingIncomeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ResearchAndDevelopmentExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The aggregate costs incurred (1) in a planned search or critical investigation aimed at discovery of new knowledge with the hope that such knowledge will be useful in developing a new product or service, a new process or technique, or in bringing about a significant improvement to an existing product or process; or (2) to translate research findings or other knowledge into a plan or design for a new product or process or for a significant improvement to an existing product or process whether intended for sale or the entity's use, during the reporting period charged to research and development projects, including the costs of developing computer software up to the point in time of achieving technological feasibility, and costs allocated in accounting for a business combination to in-process projects deemed to have no alternative future use.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 912<br> -SubTopic 730<br> -Section 25<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6472174&amp;loc=d3e58812-109433<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 985<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6501960&amp;loc=d3e128462-111756<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 730<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6420194&amp;loc=d3e21568-108373<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ResearchAndDevelopmentExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringCharges">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of expenses associated with exit or disposal activities pursuant to an authorized plan. Excludes expenses related to a discontinued operation or an asset retirement obligation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 45<br> -Paragraph 3<br> -URI https://asc.fasb.org/extlink&amp;oid=109237686&amp;loc=d3e17752-110868<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 5.P.3)<br> -URI https://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140864-122747<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.P.4(b)(1))<br> -URI https://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140904-122747<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringCharges</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, excluding tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value added and excise.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8906-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 40<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e9031-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e9038-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130543-203045<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 42<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e9054-108599<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130545-203045<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 924<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -URI https://asc.fasb.org/extlink&amp;oid=6472922&amp;loc=d3e499488-122856<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SellingAndMarketingExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The aggregate total amount of expenses directly related to the marketing or selling of products or services.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SellingAndMarketingExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 16<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1505-109256<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1448-109256<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfSharesOutstandingBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>18
<FILENAME>R6.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252655279568">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Statements of Stockholders' Equity - USD ($)<br> shares in Thousands, $ in Thousands</strong></div></th>
<th class="th"><div>Total</div></th>
<th class="th"><div>Common Stock</div></th>
<th class="th"><div>Additional Paid-in Capital</div></th>
<th class="th"><div>Accumulated Other Comprehensive Loss</div></th>
<th class="th"><div>Accumulated Deficit</div></th>
<th class="th"><div>Treasury Stock</div></th>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Beginning balance, shares at Dec. 31, 2019</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">56,448<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at beginning of period at Dec. 31, 2019</a></td>
<td class="nump">$ 154,028<span></span>
</td>
<td class="nump">$ 1,545<span></span>
</td>
<td class="nump">$ 895,899<span></span>
</td>
<td class="num">$ (854)<span></span>
</td>
<td class="num">$ (702,576)<span></span>
</td>
<td class="num">$ (39,986)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward', window );"><strong>Increase (Decrease) in Stockholders' Equity [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation</a></td>
<td class="nump">13,960<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">13,960<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Issuance of common stock under equity incentive plans, net of forfeitures (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2,454<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation', window );">Issuance of common stock under equity incentive plans, net of forfeitures</a></td>
<td class="nump">18,127<span></span>
</td>
<td class="nump">$ 60<span></span>
</td>
<td class="nump">18,067<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesNewIssues', window );">Issuance of common stock in connection with public offering, net of expenses (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3,220<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueNewIssues', window );">Issuance of common stock in connection with public offering, net of expenses</a></td>
<td class="nump">60,063<span></span>
</td>
<td class="nump">$ 82<span></span>
</td>
<td class="nump">59,981<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Treasury stock retirement</a></td>
<td class="nump">0<span></span>
</td>
<td class="num">$ (134)<span></span>
</td>
<td class="num">(39,852)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">39,986<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">33,484<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">33,484<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Other comprehensive income (loss)</a></td>
<td class="nump">663<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">663<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Ending balance, shares at Dec. 31, 2020</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">62,122<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at end of period at Dec. 31, 2020</a></td>
<td class="nump">280,325<span></span>
</td>
<td class="nump">$ 1,553<span></span>
</td>
<td class="nump">948,055<span></span>
</td>
<td class="num">(191)<span></span>
</td>
<td class="num">(669,092)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward', window );"><strong>Increase (Decrease) in Stockholders' Equity [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation</a></td>
<td class="nump">24,230<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">24,230<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Issuance of common stock under equity incentive plans, net of forfeitures (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2,152<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation', window );">Issuance of common stock under equity incentive plans, net of forfeitures</a></td>
<td class="nump">25,624<span></span>
</td>
<td class="nump">$ 54<span></span>
</td>
<td class="nump">25,570<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">238,378<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">238,378<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Other comprehensive income (loss)</a></td>
<td class="num">$ (129)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(129)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Ending balance, shares at Dec. 31, 2021</a></td>
<td class="nump">64,274<span></span>
</td>
<td class="nump">64,274<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at end of period at Dec. 31, 2021</a></td>
<td class="nump">$ 568,428<span></span>
</td>
<td class="nump">$ 1,607<span></span>
</td>
<td class="nump">997,855<span></span>
</td>
<td class="num">(320)<span></span>
</td>
<td class="num">(430,714)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward', window );"><strong>Increase (Decrease) in Stockholders' Equity [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation</a></td>
<td class="nump">44,826<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">44,826<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Issuance of common stock under equity incentive plans, net of forfeitures (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,461<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation', window );">Issuance of common stock under equity incentive plans, net of forfeitures</a></td>
<td class="nump">27,456<span></span>
</td>
<td class="nump">$ 37<span></span>
</td>
<td class="nump">27,419<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">41,010<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">41,010<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Other comprehensive income (loss)</a></td>
<td class="num">$ (2,153)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(2,153)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Ending balance, shares at Dec. 31, 2022</a></td>
<td class="nump">65,735<span></span>
</td>
<td class="nump">65,735<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at end of period at Dec. 31, 2022</a></td>
<td class="nump">$ 679,567<span></span>
</td>
<td class="nump">$ 1,644<span></span>
</td>
<td class="nump">$ 1,070,100<span></span>
</td>
<td class="num">$ (2,473)<span></span>
</td>
<td class="num">$ (389,704)<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 20<br> -Section 55<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=126964447&amp;loc=d3e11149-113907<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 20<br> -Section 55<br> -Paragraph 13<br> -URI https://asc.fasb.org/extlink&amp;oid=126964447&amp;loc=d3e11178-113907<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 35<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126961718&amp;loc=d3e4534-113899<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126973232&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInStockholdersEquityRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI https://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI https://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126732423&amp;loc=SL123482106-238011<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=124431353&amp;loc=SL124452729-227067<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=SL5780133-109256<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669619-108580<br><br>Reference 25: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8924-108599<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 205<br> -SubTopic 20<br> -Section 50<br> -Paragraph 7<br> -URI https://asc.fasb.org/extlink&amp;oid=109222650&amp;loc=SL51721683-107760<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669625-108580<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8906-108599<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of other comprehensive income (loss) attributable to parent entity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669625-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(3)<br> -URI https://asc.fasb.org/extlink&amp;oid=109239629&amp;loc=SL4573702-111684<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 20<br> -URI https://asc.fasb.org/extlink&amp;oid=126929396&amp;loc=SL4569643-111683<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669619-108580<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 19<br> -URI https://asc.fasb.org/extlink&amp;oid=126929396&amp;loc=SL4569616-111683<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodSharesNewIssues">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of new stock issued during the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126973232&amp;loc=d3e21463-112644<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI https://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodSharesNewIssues</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126973232&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI https://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodValueNewIssues">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Equity impact of the value of new stock issued during the period. Includes shares issued in an initial public offering or a secondary public offering.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI https://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126973232&amp;loc=d3e21463-112644<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodValueNewIssues</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Value, after forfeiture, of shares issued under share-based payment arrangement. Excludes employee stock ownership plan (ESOP).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI https://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Equity impact of the value of stock that has been repurchased and retired during the period. The excess of the purchase price over par value can be charged against retained earnings (once the excess is fully allocated to additional paid in capital).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126973232&amp;loc=d3e21463-112644<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI https://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockRepurchasedAndRetiredDuringPeriodValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -URI https://asc.fasb.org/extlink&amp;oid=122038336&amp;loc=d3e74512-122707<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>19
<FILENAME>R7.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252658876960">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Cash Flows - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract', window );"><strong>Operating activities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 41,010<span></span>
</td>
<td class="nump">$ 238,378<span></span>
</td>
<td class="nump">$ 33,484<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract', window );"><strong>Adjustments to reconcile net income to net cash provided by operating activities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensation', window );">Stock-based compensation</a></td>
<td class="nump">44,826<span></span>
</td>
<td class="nump">24,230<span></span>
</td>
<td class="nump">13,960<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Depreciation', window );">Depreciation and amortization</a></td>
<td class="nump">14,315<span></span>
</td>
<td class="nump">15,012<span></span>
</td>
<td class="nump">13,718<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxesAndTaxCredits', window );">Deferred income taxes</a></td>
<td class="nump">1,932<span></span>
</td>
<td class="num">(168,426)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments', window );">Net accretion of available-for-sale securities</a></td>
<td class="num">(1,146)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_GainLossOnDispositionOfAssets', window );">Asset retirements and write-downs</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,914<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract', window );"><strong>Changes in operating assets and liabilities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccountsReceivable', window );">Accounts receivable, net</a></td>
<td class="num">(8,585)<span></span>
</td>
<td class="num">(15,800)<span></span>
</td>
<td class="num">(22,910)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInInventories', window );">Inventory</a></td>
<td class="num">(60,280)<span></span>
</td>
<td class="num">(36,612)<span></span>
</td>
<td class="num">(12,116)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets', window );">Prepaid expenses and other assets</a></td>
<td class="num">(38,359)<span></span>
</td>
<td class="num">(27,074)<span></span>
</td>
<td class="nump">773<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccountsPayable', window );">Accounts payable</a></td>
<td class="nump">12,111<span></span>
</td>
<td class="nump">16,025<span></span>
</td>
<td class="nump">2,190<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccruedLiabilities', window );">Accrued liabilities</a></td>
<td class="nump">20,919<span></span>
</td>
<td class="nump">3,273<span></span>
</td>
<td class="nump">11,922<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInDeferredRevenue', window );">Deferred revenue</a></td>
<td class="nump">9,118<span></span>
</td>
<td class="nump">10,400<span></span>
</td>
<td class="nump">3,596<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities', window );">Other long-term liabilities</a></td>
<td class="num">(8,678)<span></span>
</td>
<td class="num">(2,613)<span></span>
</td>
<td class="nump">2,878<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInOperatingActivities', window );">Net cash provided by operating activities</a></td>
<td class="nump">27,183<span></span>
</td>
<td class="nump">56,793<span></span>
</td>
<td class="nump">51,409<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract', window );"><strong>Investing activities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment', window );">Purchases of property and equipment</a></td>
<td class="num">(14,067)<span></span>
</td>
<td class="num">(10,463)<span></span>
</td>
<td class="num">(7,819)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireMarketableSecurities', window );">Purchases of marketable securities</a></td>
<td class="num">(191,403)<span></span>
</td>
<td class="num">(298,092)<span></span>
</td>
<td class="num">(72,982)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities', window );">Maturities of marketable securities</a></td>
<td class="nump">181,388<span></span>
</td>
<td class="nump">197,894<span></span>
</td>
<td class="nump">20,000<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInInvestingActivities', window );">Net cash used in investing activities</a></td>
<td class="num">(24,082)<span></span>
</td>
<td class="num">(110,661)<span></span>
</td>
<td class="num">(60,801)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract', window );"><strong>Financing activities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProceedsFromStockOptionsExercised', window );">Proceeds from common stock issuances related to employee benefit plans</a></td>
<td class="nump">27,456<span></span>
</td>
<td class="nump">25,624<span></span>
</td>
<td class="nump">18,127<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_PaymentsForFinancingArrangements', window );">Payments related to financing arrangements</a></td>
<td class="num">(2,393)<span></span>
</td>
<td class="num">(1,241)<span></span>
</td>
<td class="num">(5,758)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProceedsFromIssuanceOfCommonStock', window );">Proceeds from the sale of common stock in connection with public offering, net of expenses</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">60,063<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProceedsFromLinesOfCredit', window );">Proceeds from line of credit</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">30,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RepaymentsOfLinesOfCredit', window );">Payments related to the line of credit</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(60,285)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInFinancingActivities', window );">Net cash provided by financing activities</a></td>
<td class="nump">25,063<span></span>
</td>
<td class="nump">24,383<span></span>
</td>
<td class="nump">42,147<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents', window );">Effect of exchange rate changes on cash and cash equivalents</a></td>
<td class="num">(424)<span></span>
</td>
<td class="nump">11<span></span>
</td>
<td class="nump">595<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect', window );">Net increase (decrease) in cash and cash equivalents</a></td>
<td class="nump">27,740<span></span>
</td>
<td class="num">(29,474)<span></span>
</td>
<td class="nump">33,350<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents', window );">Cash and cash equivalents at beginning of year</a></td>
<td class="nump">51,333<span></span>
</td>
<td class="nump">80,807<span></span>
</td>
<td class="nump">47,457<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents', window );">Cash and cash equivalents at end of year</a></td>
<td class="nump">79,073<span></span>
</td>
<td class="nump">51,333<span></span>
</td>
<td class="nump">80,807<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SupplementalCashFlowInformationAbstract', window );"><strong>Supplemental disclosures of cash flow information:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InterestPaidNet', window );">Interest paid</a></td>
<td class="nump">577<span></span>
</td>
<td class="nump">631<span></span>
</td>
<td class="nump">1,686<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxesPaidNet', window );">Income taxes paid</a></td>
<td class="nump">9,607<span></span>
</td>
<td class="nump">5,197<span></span>
</td>
<td class="nump">751<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NoncashInvestingAndFinancingItemsAbstract', window );"><strong>Non-cash investing activities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ChangeInCapitalExpendituresIncurredButNotYetPaid', window );">Changes in accounts payable and accrued liabilities related to purchases of property and equipment</a></td>
<td class="nump">$ 586<span></span>
</td>
<td class="nump">$ 194<span></span>
</td>
<td class="num">$ (597)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ChangeInCapitalExpendituresIncurredButNotYetPaid">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Change In Capital Expenditures Incurred But Not Yet Paid</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ChangeInCapitalExpendituresIncurredButNotYetPaid</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_PaymentsForFinancingArrangements">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Payments For Financing Arrangements</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_PaymentsForFinancingArrangements</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The sum of the periodic adjustments of the differences between securities' face values and purchase prices that are charged against earnings. This is called accretion if the security was purchased at a discount and amortization if it was purchased at premium. As a noncash item, this element is an adjustment to net income when calculating cash provided by or used in operations using the indirect method.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage. Excludes amount for disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3521-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3044-108585<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI https://asc.fasb.org/extlink&amp;oid=126999549&amp;loc=SL98516268-108586<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in cash, cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including effect from exchange rate change. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 230<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=123444420&amp;loc=d3e33268-110906<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3521-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxesAndTaxCredits">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred income tax expense (benefit) and income tax credits.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxesAndTaxCredits</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Depreciation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of expense recognized in the current period that reflects the allocation of the cost of tangible assets over the assets' useful lives. Includes production and non-production related depreciation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Depreciation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) from effect of exchange rate changes on cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; held in foreign currencies. Excludes amounts for disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 230<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=123444420&amp;loc=d3e33268-110906<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GainLossOnDispositionOfAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of gain (loss) on sale or disposal of property, plant and equipment assets, excluding oil and gas property and timber property.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 45<br> -Paragraph 5<br> -URI https://asc.fasb.org/extlink&amp;oid=126905981&amp;loc=d3e2443-110228<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=109226691&amp;loc=d3e2941-110230<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GainLossOnDispositionOfAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxesPaidNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of cash paid during the current period to foreign, federal, state, and local authorities as taxes on income, net of any cash received during the current period as refunds for the overpayment of taxes.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126999549&amp;loc=d3e4297-108586<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxesPaidNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInAccountsPayable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in the aggregate amount of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInAccountsPayable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInAccountsReceivable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in amount due within one year (or one business cycle) from customers for the credit sale of goods and services.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInAccountsReceivable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInAccruedLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in the aggregate amount of expenses incurred but not yet paid.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInAccruedLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInDeferredRevenue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in deferred income and obligation to transfer product and service to customer for which consideration has been received or is receivable.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInDeferredRevenue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInInventories">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in the aggregate value of all inventory held by the reporting entity, associated with underlying transactions that are classified as operating activities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInInventories</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInOperatingCapitalAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in noncurrent operating liabilities classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in prepaid expenses, and assets classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InterestPaidNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash paid for interest, excluding capitalized interest, classified as operating activity. Includes, but is not limited to, payment to settle zero-coupon bond for accreted interest of debt discount and debt instrument with insignificant coupon interest rate in relation to effective interest rate of borrowing attributable to accreted interest of debt discount.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126999549&amp;loc=d3e4297-108586<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 17<br> -Subparagraph (d)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3367-108585<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (e)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3536-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InterestPaidNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInFinancingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow (outflow) from financing activities, including discontinued operations. Financing activity cash flows include obtaining resources from owners and providing them with a return on, and a return of, their investment; borrowing money and repaying amounts borrowed, or settling the obligation; and obtaining and paying for other resources obtained from creditors on long-term credit.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3521-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInFinancingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInInvestingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow (outflow) from investing activities, including discontinued operations. Investing activity cash flows include making and collecting loans and acquiring and disposing of debt or equity instruments and property, plant, and equipment and other productive assets.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3521-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInInvestingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInOperatingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow (outflow) from operating activities, including discontinued operations. Operating activity cash flows include transactions, adjustments, and changes in value not defined as investing or financing activities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3536-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3521-108585<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInOperatingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI https://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI https://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126732423&amp;loc=SL123482106-238011<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=124431353&amp;loc=SL124452729-227067<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=SL5780133-109256<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669619-108580<br><br>Reference 25: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8924-108599<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 205<br> -SubTopic 20<br> -Section 50<br> -Paragraph 7<br> -URI https://asc.fasb.org/extlink&amp;oid=109222650&amp;loc=SL51721683-107760<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669625-108580<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8906-108599<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NoncashInvestingAndFinancingItemsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NoncashInvestingAndFinancingItemsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquireMarketableSecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow for purchase of marketable security.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI https://asc.fasb.org/extlink&amp;oid=124260329&amp;loc=d3e26853-111562<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquireMarketableSecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquirePropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProceedsFromIssuanceOfCommonStock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The cash inflow from the additional capital contribution to the entity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3255-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProceedsFromIssuanceOfCommonStock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProceedsFromLinesOfCredit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow from contractual arrangement with the lender, including but not limited to, letter of credit, standby letter of credit and revolving credit arrangements.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3255-108585<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(f))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProceedsFromLinesOfCredit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow from maturity, prepayment and call of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI https://asc.fasb.org/extlink&amp;oid=124260329&amp;loc=d3e26853-111562<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3151-108585<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 12<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3179-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProceedsFromStockOptionsExercised">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow from exercise of option under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2A<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=SL79508275-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3255-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProceedsFromStockOptionsExercised</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RepaymentsOfLinesOfCredit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow for payment of an obligation from a lender, including but not limited to, letter of credit, standby letter of credit and revolving credit arrangements.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3291-108585<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(f))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RepaymentsOfLinesOfCredit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of noncash expense for share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SupplementalCashFlowInformationAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SupplementalCashFlowInformationAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>20
<FILENAME>R8.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661222560">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Description of Business and Significant Accounting Policies<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccountingPoliciesAbstract', window );"><strong>Accounting Policies [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BusinessDescriptionAndAccountingPoliciesTextBlock', window );">Description of Business and Significant Accounting Policies</a></td>
<td class="text">Description of Business and Significant Accounting Policies<div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Company</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Calix, Inc. (together with its subsidiaries, &#8220;Calix&#8221; or the &#8220;Company&#8221;) was incorporated in August 1999 and is a Delaware corporation. The Company is the leading global provider of a platform (cloud, software and systems) and managed services that focus on the subscriber-facing network, the portion of the network that governs available bandwidth and determines the range and quality of services that can be offered to subscribers. This platform and managed services enable broadband service providers (&#8220;BSPs&#8221;) of all sizes to innovate and transform their businesses. The Company&#8217;s BSP customers are empowered to utilize real-time data and insights from the Calix platform to simplify their businesses and deliver experiences that excite their subscribers. These insights enable BSPs to grow their businesses through increased subscriber acquisition, loyalty and revenue, thereby increasing the value of their businesses and contributions to their communities.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Basis of Presentation and Accounting Guidance</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The accompanying consolidated financial statements have been prepared in accordance with the requirements of the U.S. Securities and Exchange Commission (&#8220;SEC&#8221;) and U.S. generally accepted accounting principles (&#8220;GAAP&#8221;). All significant intercompany balances and transactions have been eliminated in consolidation. Any reference in these notes to applicable accounting guidance is meant to refer to the authoritative U.S. GAAP as found in the Financial Accounting Standards Board (&#8220;FASB&#8221;) Accounting Standards Codification (&#8220;ASC&#8221;).</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Use of Estimates</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The preparation of financial statements is in conformity with U.S. GAAP, which requires management to make estimates and assumptions that affect the amounts reported in the consolidated financial statements and accompanying notes. For the Company, these estimates include, but are not limited to: allowances for doubtful accounts and sales returns, excess and obsolete inventory, allowances for obligations to its contract manufacturers, valuation of stock-based compensation, useful lives assigned to long-lived assets, standard and extended warranty costs, realizability of deferred tax assets and uncertain tax positions and contingencies. Actual results could differ from those estimates, and such differences could be material to the Company&#8217;s financial position and results of operations.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Revenue Recognition</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue is recognized when a performance obligation is satisfied, which occurs 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 to in exchange for those goods or services. Revenue from sales of access and premises systems is recognized when control is transferred to the customer, which is generally when the products are shipped. Revenue from software platform licenses, which provides the customer with a right to use the software as it exists, is generally recognized upfront when made available to the customer. Revenue from cloud-based software subscriptions, customer support, maintenance, extended warranty subscriptions and managed services is generally recognized ratably over the contract term. Revenue from professional services and training is recognized as the services are delivered.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A performance obligation is a promise in a contract to transfer a distinct good or service to the customer and is the unit of account. A contract&#8217;s transaction price is allocated to each distinct performance obligation and recognized as revenue when, or as, the performance obligation is satisfied. The Company&#8217;s hardware products contain both software and non-software components that function together to deliver the products&#8217; essential functionality and therefore constitutes a single performance obligation as the promise to transfer the individual software and non-software components is not separately identifiable and, therefore, not distinct. Cloud-based software subscriptions can include multi-year agreements with a fixed annual fee for a minimum committed usage level. To the extent that minimum committed usage level each year varies, the Company has concluded that each year represents a distinct stand-ready performance obligation and the transaction price allocated to each performance obligation is recognized as revenue ratably over each annual period. The Company&#8217;s contracts may include multiple performance obligations. For such arrangements, the Company allocates the contract&#8217;s transaction price to each performance obligation using the relative stand-alone selling price of each distinct good or service in the contract. The Company generally determines stand-alone selling prices based on the prices charged to customers or its best estimate of stand-alone selling price. The Company&#8217;s estimate of stand-alone selling price is established considering multiple factors including, but not limited to, geographies, market conditions, competitive landscape, internal costs, gross margin objectives, characteristics of targeted customers and pricing practices. The determination of estimated stand-alone selling price is made through consultation with and formal approval by management, taking into consideration the go-to-market strategy.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Cost of Revenue</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cost of revenue consists primarily of finished goods inventory purchased from the Company&#8217;s contract manufacturers, payroll and related expenses associated with managing the relationships with contract manufacturers, depreciation of manufacturing test equipment, warranty and retrofit costs, excess and obsolete inventory costs, allowances for obligations to its contract manufacturers, shipping charges and amortization of certain intangible assets. It also includes contractor and other costs of services incurred directly related to the delivery of services to customers.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Warranty and Retrofit</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company offers limited warranties for its hardware products for a period of <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1NQ_52e60d60-98c1-49fa-aeb6-aa5951b471ac">one</span>, <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1OQ_d86fb7cc-3137-407d-b8ce-6c28a7e598e4">three</span> or five years, depending on the product type. The Company recognizes estimated costs related to warranty activities as a component of cost of revenue upon product shipment or upon identification of a specific product failure. Under certain circumstances, the Company also provides fixes on specifically identified performance failures for products that are outside of the standard warranty period and recognizes estimated costs related to retrofit activities as a component of cost of revenue upon identification of such product failures. The Company recognizes estimated warranty and retrofit costs when it is probable that a liability has been incurred and the amount of loss is reasonably estimable. The estimates are based upon historical and projected product failure and claim rates, historical costs incurred in correcting product failures and information available related to any specifically identified product failures. Judgment is required in estimating costs associated with warranty and retrofit activities, and the Company's estimates are limited to information available to the Company at the time of such estimates. In some cases, such as when a specific product failure is first identified or a new product is introduced, the Company may initially have limited information and limited historical failure and claim rates upon which to base its estimates, and such estimates may require revision in future periods. The recorded amount is adjusted from time to time for specifically identified warranty and retrofit exposure. Actual warranty and retrofit expenses are charged against the Company&#8217;s estimated warranty and retrofit liability when incurred. Factors that affect the Company&#8217;s warranty and retrofit liability include the number of active installed units and historical and anticipated rates of warranty and retrofit claims and cost per claim.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Stock-Based Compensation</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock-based compensation expense associated with stock options and purchase rights under the Amended and Restated Employee Stock Purchase Plan (the &#8220;ESPP&#8221;) and the Amended and Restated 2017 Nonqualified Employee Stock Purchase Plan (the &#8220;NQ ESPP&#8221;) is measured at the grant date based on the fair value of the award and is recognized, net of forfeitures, as expense over the remaining requisite service period (generally the vesting period) on a straight-line basis.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair value of stock option and employee stock purchase right under the ESPP is estimated at the grant date using the Black-Scholes option valuation model. The fair value of the employee stock purchase right under the NQ ESPP is based on closing market price of the Company&#8217;s common stock on the date of grant.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock-based compensation expense associated with performance stock options (&#8220;PSOs&#8221;) with graded vesting features and which contain both a performance and a service condition is measured based on fair value of stock options estimated at the grant date using the Black-Scholes option valuation model, and is recognized, net of forfeitures, as expense over the requisite service period using the graded vesting attribution method.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Compensation expense is only recognized if the Company has determined that it is probable that the performance condition will be met. The Company reassesses the probability of vesting at each reporting period and adjusts compensation expense based on its probability assessment.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Loss Contingencies</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">From time to time, the Company is involved in legal proceedings arising from the normal course of business activities. The Company evaluates the likelihood of an unfavorable outcome of legal proceedings to which it is a party and accrues a loss contingency when the loss is probable and reasonably estimable. Assessing legal contingencies involves significant judgment and estimates, and the outcome of litigation is inherently uncertain and subject to numerous factors outside the Company&#8217;s control. Significant judgment is required when the Company assesses the likelihood of any adverse judgments or outcomes, including the potential range of possible losses, and whether losses are probable and reasonably estimable.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Because of uncertainties related to these matters, the Company bases its estimates of whether a loss contingency is probable or reasonably possible, as well as the reasonable range of possible losses associated with each loss contingency, only on the information available at the time. As additional information becomes available, and at least quarterly, the Company reassesses the potential liability on each significant matter and may revise its estimates. These revisions could have a material impact on the Company&#8217;s business, operating results or financial condition. The actual outcome of these legal proceedings may materially differ from the Company&#8217;s estimates of potential liability, which could have a material adverse effect on the Company&#8217;s business, operating results or financial condition.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Credit Risk and Inventory Supplier Concentrations</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Financial instruments that potentially subject the Company to significant concentrations of credit risk consist primarily of cash, cash equivalents, marketable securities and accounts receivable. Cash equivalents consist of money market funds and marketable securities with a maturity at the date of purchase of ninety days or less, which are invested through financial institutions in the United States. Deposits in and investments held by these financial institutions may, at times, exceed federally insured limits. The Company has not experienced any losses in such accounts. The Company also has approximately $2.7 million of cash held by its foreign subsidiaries in India, China and the United Kingdom. Management believes that the financial institutions that hold the Company&#8217;s cash and cash equivalents are financially sound and, accordingly, minimal credit risk exists with respect to these cash and cash equivalents.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company depends primarily on a small number of outside contract manufacturers (&#8220;CMs&#8221;) and original design manufacturers (&#8220;ODMs&#8221;) for the bulk of its finished goods inventory. The Company generally purchases its products through purchase orders with its suppliers. While the Company seeks to maintain a sufficient supply of its products, the Company&#8217;s business and results of operations could be adversely affected by a stoppage or delay in receiving such products, the receipt of defective parts, an increase in price of such products or the Company&#8217;s inability to obtain lower prices from its CMs, ODMs and other suppliers in response to competitive pressures.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Fair Value of Financial Instruments</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The carrying amounts of cash and cash equivalents, trade receivables, accounts payable and other accrued liabilities approximate their fair value due to their relatively short-term nature. Marketable securities are valued using quoted market prices in active markets to determine fair value.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Cash, Cash Equivalents and Marketable Securities</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cash equivalents and marketable securities are stated at amounts that approximate fair value based on quoted market prices.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company has invested its excess cash primarily in money market funds and highly liquid marketable securities such as U.S. treasury securities, corporate debt instruments, commercial paper and U.S. government securities. The Company considers all investments with maturities of three months or less when purchased to be cash equivalents. Marketable securities represent highly liquid U.S. treasury securities, corporate debt instruments, commercial paper and U.S. government securities with maturities greater than 90 days at date of purchase. Marketable securities with maturities greater than one year are classified as current because management considers all marketable securities to be available for current operations.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s investments have been classified and accounted for as available-for-sale. Such investments are recorded at fair value and unrealized holding gains and losses are reported as a separate component of comprehensive loss in the stockholders&#8217; equity until realized. Realized gains and losses on sales of marketable securities, if any, are determined on the specific identification method and are reclassified from accumulated other comprehensive loss to results of operations as &#8220;Other income (expense), net.&#8221; Realized gains and losses were not significant for the years ended December&#160;31, 2022 and 2021, respectively.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">For the Company&#8217;s available-for-sale debt securities in an unrealized loss position, the Company determines whether a credit loss exists. In this assessment, among other factors, the Company considers the extent to which the fair value is less than the amortized cost, any changes to the rating of the security by a rating agency, and adverse conditions specifically related to the security. If factors indicate a credit loss exists, an allowance for credit loss will be recorded to &#8220;Other income (expense), net,&#8221; limited by the amount that the fair value is less than the amortized cost basis. The amount of fair value change relating to all other factors will be recognized in other comprehensive loss.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">See Note 2 &#8220;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Cash, Cash Equivalents and Marketable Securities.&#8221;</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Allowance for Doubtful Accounts</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company maintains an allowance for doubtful accounts for expected credit losses at contract inception resulting from the inability of its customers to make required payments. The Company records a specific allowance and revises the expected loss based on an analysis of individual past-due balances. Additionally, based on historical write-offs and the Company&#8217;s collection experience, the Company records an additional allowance based on a percentage of outstanding receivables. The Company performs credit evaluations of its customers&#8217; financial condition. These evaluations require judgment and are based on a variety of factors including, but not limited to, current economic trends, payment history and a financial review of the customer. Actual collection losses may differ from management&#8217;s estimates, and such differences could be material to the Company's financial position and results of operations.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Inventory Valuation and Supplier Purchase Commitments</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Inventory, which primarily consists of finished goods purchased from CMs or ODMs, is stated at the lower of cost (determined by the first-in, first-out method) or market value. Inbound shipping costs and U.S. tariffs are included in cost of inventory. In </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">addition, from time to time, the Company procures component inventory primarily as a result of manufacturing discontinuation of critical components by suppliers. The Company regularly monitors inventory quantities on hand and records write-downs for excess and obsolete inventories based on the Company&#8217;s estimate of demand for its products, potential obsolescence of technology, product life cycles and whether pricing trends or forecasts indicate that the carrying value of inventory exceeds its estimated selling price. The Company also evaluates its supplier purchase commitments, which have increased significantly due to extended lead-times in the current supply chain environment, and records a liability for excess and obsolete components based on its estimated demand of our products, potential obsolescence of technology and product life cycles.</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">These factors are impacted by market and economic conditions, technology changes and new product introductions and require significant estimates that may include elements that are uncertain. Actual demand may differ from forecasted demand and may have a material effect on gross profit. If inventory is written down, a new cost basis is established that cannot be increased in future periods. Shipments from suppliers before the Company receives them are recorded as in-transit inventory when title and the significant risks and rewards of ownership have passed to the Company.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Contract Costs</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company capitalizes certain sales commissions related primarily to multi-year cloud-based software subscriptions and extended warranty support contracts.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Capitalized commissions are amortized as sales and marketing expenses over the period that the related revenue is recognized, which can be up to five years for extended warranty. The Company classifies the unamortized portion of deferred commissions as current or noncurrent based on the timing of when the Company expects to recognize the expense. The current and noncurrent portions of deferred commissions are included in &#8220;Prepaid expenses and other current assets&#8221; and &#8220;Other assets,&#8221; respectively, in the Company&#8217;s Consolidated Balance Sheets.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Property and Equipment</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property and equipment are stated at cost, less accumulated depreciation, and are depreciated using the straight-line method over the estimated useful life of each asset. Generally, computer equipment is depreciated over two years; purchased software is depreciated over <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4MDI_2e01504e-91d5-45fd-890f-25b987875d7a">three</span> to five years; test equipment is depreciated over three years; furniture and fixtures are depreciated over seven years; and leasehold improvements are depreciated over the shorter of the respective lease term or the estimated useful life of the asset. Maintenance and repairs are charged to expense as incurred.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Goodwill</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Goodwill was recorded as a result of the Company&#8217;s acquisitions of Occam Networks, Inc. in February 2011 and Optical Solutions, Inc. in February 2006. The Company records goodwill when consideration paid in a business acquisition exceeds the fair value of the net tangible assets and the identified intangible assets acquired. Goodwill is not amortized but instead is subject to an annual impairment test or more frequently if events or changes in circumstances indicate that it may be impaired. The Company evaluates goodwill on an annual basis as of the end of the second quarter of each fiscal year. Management has determined that it operates as a single reporting unit and, therefore, evaluates goodwill impairment at the enterprise level.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">At the end of the second quarter of 2022, the Company completed its annual goodwill impairment test. Based on its assessment of certain qualitative factors such as market capitalization, management concluded that the fair value of the Company was more likely than not greater than its carrying amount as of July 2, 2022. As such, it was not necessary to perform the two-step quantitative goodwill impairment test at the time.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">There have been no significant events or changes in circumstances subsequent to the 2022 annual impairment test that would more likely than not indicate that the carrying value of goodwill may have been impaired as of December&#160;31, 2022. There were no impairment losses for goodwill for the years ended December&#160;31, 2022, 2021 or 2020.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Deferred Revenue</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Deferred revenue results from transactions where the Company billed the customer for products or services and when cash payments are received or due prior to transferring control of the promised goods or services to the customer. </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Payment terms to customers typically range from net&#160;30&#160;to net&#160;90&#160;days and vary by the size and location of customer and the products or services offered. The period between the transfer of control of the promised good or service to a customer and when payment is due is not significant.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Income Taxes</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company evaluates its tax positions and estimates its current tax exposure along with assessing temporary differences that result from different book to tax treatment of items not currently deductible for tax purposes. These differences result in deferred tax assets and liabilities on the Company&#8217;s Consolidated Balance Sheets, which are estimated based upon the </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">difference between the financial statement and tax bases of assets and liabilities using the enacted tax rates that will be in effect when these differences reverse. In general, deferred tax assets represent future tax benefits to be received when certain expenses previously recognized in the Company&#8217;s Consolidated Statements of Comprehensive Income become deductible expenses under applicable income tax laws or loss or credit carryforwards are utilized. Accordingly, realization of the Company&#8217;s deferred tax assets is dependent on future taxable income against which these deductions, losses and credits can be utilized.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company must assess the likelihood that deferred tax assets will be recovered from future taxable income, and if the Company determines that recovery is not more likely than not, the Company must establish a valuation allowance. Management judgment is required in determining its provision for income taxes, deferred tax assets and liabilities and any valuation allowance recorded against its net deferred tax assets. In the third quarter of 2021, the Company reversed the majority of its valuation allowance and recorded on its balance sheet U.S. federal and certain state deferred tax assets of $162.0&#160;million. As of December 31, 2022, the Company determined that positive evidence continues to outweigh negative evidence and concluded that it was more likely than not that its U.S. federal and state (with the exception of California) deferred tax assets are realizable. The Company currently maintains a valuation allowance of $29.9 million for certain U.S. federal and California deferred tax assets.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Newly Adopted Accounting Standards</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company did not adopt any new accounting standards in 2022 that were significant to the Company.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Recent Accounting Pronouncements Not Yet Adopted</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">There have been no accounting pronouncements or changes in accounting pronouncements that are significant or potentially significant to the Company.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountingPoliciesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountingPoliciesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessDescriptionAndAccountingPoliciesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for the business description and accounting policies concepts. Business description describes the nature and type of organization including but not limited to organizational structure as may be applicable to holding companies, parent and subsidiary relationships, business divisions, business units, business segments, affiliates and information about significant ownership of the reporting entity. Accounting policies describe all significant accounting policies of the reporting entity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -URI https://asc.fasb.org/topic&amp;trid=2134479<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -URI https://asc.fasb.org/topic&amp;trid=2122369<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessDescriptionAndAccountingPoliciesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>21
<FILENAME>R9.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252663850304">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Cash, Cash Equivalents and Marketable Securities<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAbstract', window );"><strong>Cash and Cash Equivalents [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashCashEquivalentsAndMarketableSecuritiesTextBlock', window );">Cash, Cash Equivalents and Marketable Securities</a></td>
<td class="text">Cash, Cash Equivalents and Marketable Securities<div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cash, cash equivalents and marketable securities consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-indent:22.5pt"><span><br/></span></div><div style="margin-top:5pt;text-indent:22.5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:95.467%"><tr><td style="width:1.0%"/><td style="width:73.172%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.484%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.079%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.484%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.081%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash and cash equivalents:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">39,189&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">26,442&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commercial paper</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">33,199&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">21,582&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,990&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Money market funds</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">555&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,320&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Corporate debt securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">140&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">989&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total cash and cash equivalents</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">79,073&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">51,333&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Marketable securities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">106,750&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">60,279&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commercial paper</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">28,992&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">80,812&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government agency securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,632&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,527&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Corporate debt securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,168&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,576&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Municipal securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,808&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total marketable securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">162,642&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">153,002&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">241,715&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">204,335&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The carrying amounts of the Company&#8217;s money market funds approximate their fair values due to their nature, duration and short maturities. As of December&#160;31, 2022, all marketable securities were due in two years or less.</span></div><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The amortized cost and fair value of marketable securities as of December&#160;31, 2022 were as follows (in thousands):</span></div><div style="margin-top:7pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:45.245%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:2.139%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.835%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.554%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.835%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.554%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.838%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Amortized Cost</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Gross Unrealized Losses</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Fair Value</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">114,119&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,379)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">112,740&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commercial paper</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62,262&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(71)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62,191&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government agency securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,876&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(244)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,632&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Corporate debt securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,312&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(4)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,308&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Municipal securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">101&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total marketable securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">203,670&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,699)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">201,971&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:7pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Unrealized gains and losses were not significant as of December&#160;31, 2021.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashCashEquivalentsAndMarketableSecuritiesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure of cash, cash equivalents, and debt and equity securities, including any unrealized or realized gain (loss).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -URI https://asc.fasb.org/topic&amp;trid=2196928<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashCashEquivalentsAndMarketableSecuritiesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>22
<FILENAME>R10.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252672895680">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Fair Value Measurements<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueDisclosuresAbstract', window );"><strong>Fair Value Disclosures [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueDisclosuresTextBlock', window );">Fair Value Measurements</a></td>
<td class="text">Fair Value Measurements<div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company measures its cash equivalents and marketable securities at fair value on a recurring basis. Fair value is an exit price, representing the amount that would be received to sell an asset or paid to transfer a liability in an orderly transaction between market participants. As such, fair value is a market-based measurement that should be determined based on assumptions that market participants would use in pricing an asset or liability. The Company utilizes the following three-tier value hierarchy which prioritizes the inputs used in measuring fair value:</span></div><div style="margin-top:6pt;padding-left:36pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Level 1 &#8211; Observable inputs that reflect quoted prices (unadjusted) for identical assets or liabilities in active markets.</span></div><div style="margin-top:6pt;padding-left:36pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Level 2 &#8211; Observable inputs other than quoted prices included in Level 1 for similar instruments in active markets, quoted prices for identical or similar instruments in markets that are not active, and model-driven valuations in which all significant inputs and significant value drivers are observable in active markets.</span></div><div style="margin-top:6pt;padding-left:36pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Level 3 &#8211; Unobservable inputs to the valuation derived from fair valuation techniques in which one or more significant inputs or significant value drivers are unobservable. The fair value hierarchy also requires the Company to maximize the use of observable inputs, when available, and to minimize the use of unobservable inputs when determining inputs and determining fair value.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following tables sets forth the Company&#8217;s financial assets measured at fair value on a recurring basis based on the three-tier fair value hierarchy (in thousands): </span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:64.835%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.572%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.823%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.572%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.823%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.575%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">As of December 31, 2022</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Level 1</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Level 2</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Total</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Money market funds</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">555&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">555&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">112,740&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">112,740&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commercial paper</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62,191&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62,191&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government agency securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,632&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,632&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Corporate debt securities</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,308&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,308&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Municipal securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">113,295&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">89,231&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">202,526&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:5pt"><span><br/></span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:64.835%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.572%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.823%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.572%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.823%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.575%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">As of December 31, 2021</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Level 1</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Level 2</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Total</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Money market funds</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,320&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,320&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">60,279&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">60,279&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commercial paper</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">102,394&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">102,394&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government agency securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,527&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,527&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Corporate debt securities</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,565&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,565&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Municipal securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,808&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,808&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62,599&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">115,294&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">177,893&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueDisclosuresAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueDisclosuresAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueDisclosuresTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for the fair value of financial instruments (as defined), including financial assets and financial liabilities (collectively, as defined), and the measurements of those instruments as well as disclosures related to the fair value of non-financial assets and liabilities. Such disclosures about the financial instruments, assets, and liabilities would include: (1) the fair value of the required items together with their carrying amounts (as appropriate); (2) for items for which it is not practicable to estimate fair value, disclosure would include: (a) information pertinent to estimating fair value (including, carrying amount, effective interest rate, and maturity, and (b) the reasons why it is not practicable to estimate fair value; (3) significant concentrations of credit risk including: (a) information about the activity, region, or economic characteristics identifying a concentration, (b) the maximum amount of loss the entity is exposed to based on the gross fair value of the related item, (c) policy for requiring collateral or other security and information as to accessing such collateral or security, and (d) the nature and brief description of such collateral or security; (4) quantitative information about market risks and how such risks are managed; (5) for items measured on both a recurring and nonrecurring basis information regarding the inputs used to develop the fair value measurement; and (6) for items presented in the financial statement for which fair value measurement is elected: (a) information necessary to understand the reasons for the election, (b) discussion of the effect of fair value changes on earnings, (c) a description of [similar groups] items for which the election is made and the relation thereof to the balance sheet, the aggregate carrying value of items included in the balance sheet that are not eligible for the election; (7) all other required (as defined) and desired information.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126976982&amp;loc=d3e19207-110258<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueDisclosuresTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>23
<FILENAME>R11.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252696173744">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Balance Sheet Details<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BalanceSheetRelatedDisclosuresAbstract', window );"><strong>Balance Sheet Related Disclosures [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SupplementalBalanceSheetDisclosuresTextBlock', window );">Balance Sheet Details</a></td>
<td class="text">Balance Sheet Details<div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Accounts receivable, net consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:98.538%"><tr><td style="width:1.0%"/><td style="width:73.380%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.432%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.027%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.432%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.029%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accounts receivable</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">94,201&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">85,944&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Allowance for doubtful accounts</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(397)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(725)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">93,804&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">85,219&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The table below summarizes the changes in allowance for doubtful accounts and product return liability for the periods indicated (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.076%"><tr><td style="width:1.0%"/><td style="width:46.490%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.456%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.345%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.456%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.345%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.456%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.345%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.456%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.351%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Balance at Beginning of Year</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Additions Charged to Expenses or Revenue Net of Recoveries</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Write Offs and Returns</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Balance at <br/>End of Year</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Year Ended December 31, 2022:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Allowance for doubtful accounts</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">725&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(276)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(52)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">397&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Product return liability</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,836&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,622&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(4,497)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,961&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Year Ended December 31, 2021:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Allowance for doubtful accounts</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,405&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(201)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(479)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">725&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Product return liability</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,888&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,681&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(3,733)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,836&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Year Ended December 31, 2020:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Allowance for doubtful accounts</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">374&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,085&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(54)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,405&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Product return liability</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">919&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,391&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(2,422)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,888&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Inventory consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"><tr><td style="width:1.0%"/><td style="width:73.035%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.454%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.178%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.454%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.179%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Raw materials</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">640&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">130&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Finished goods</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">148,520&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">88,750&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">149,160&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">88,880&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:7pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Prepaid expenses and other current assets consisted of the following (in thousands):</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"><tr><td style="width:1.0%"/><td style="width:73.750%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.446%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.828%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.446%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.830%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Supplier deposits</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">39,064&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,191&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Prepaid expenses and other current assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,627&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">24,620&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62,691&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">30,811&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property and equipment, net consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"><tr><td style="width:1.0%"/><td style="width:73.035%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.454%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.178%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.454%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.179%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Test equipment</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">44,106&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">39,476&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Computer equipment</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">13,396&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">11,156&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Software</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10,389&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9,013&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Leasehold improvements</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,730&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,351&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Furniture and fixtures</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,153&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,812&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">70,774&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62,808&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accumulated depreciation and amortization</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(44,940)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(41,025)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">25,834&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">21,783&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:7pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Depreciation and amortization expenses were&#160;$14.3 million, $15.0 million and&#160;$13.7 million for the years ended December&#160;31, 2022, 2021 and 2020, respectively.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Other long-term assets consisted of the following (in thousands):</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"><tr><td style="width:1.0%"/><td style="width:73.750%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.446%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.828%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.446%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.830%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Intangible asset</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,253&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,885&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other long-term assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">14,889&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,800&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">19,142&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">13,685&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:7pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Intangible Asset Acquisition</span></div><div style="margin-top:7pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In March 2018, and as amended in December 2020, the Company entered into an agreement with a vendor to develop a certain software product and related enhancements pursuant to which the Company is obligated to make revenue-share payments under the program, subject to aggregate fixed revenue-share payments of $15.8&#160;million. The payments are based on a revenue-share rate applied to revenue from the developed-product and the corresponding hardware sales through March 2024. If the minimum revenue-share payments are not achieved by the end of that period, a true-up payment will be due. As of December&#160;31, 2022, the liability, including accrued interest, was $11.4&#160;million, of which $7.2&#160;million is included in &#8220;Accrued liabilities&#8221; and $4.2&#160;million in &#8220;Other long-term liabilities&#8221; in the accompanying Consolidated Balance Sheet. As of December 31, 2021, the liability, including accrued interest, was $13.2&#160;million, of which $4.7&#160;million was included in &#8220;Accrued liabilities&#8221; and $8.5&#160;million in other &#8220;Other long-term liabilities.&#8221;</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_027d6b6d-617d-484f-9ecf-b96b9b28d960"><span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_50fa3eb5-1337-42a0-a46b-a7c0ec1f6782">Accrued liabilities</span></span> consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"><tr><td style="width:1.0%"/><td style="width:73.035%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.454%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.178%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.454%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.179%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Compensation and related benefits</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">27,813&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,165&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Component inventory held by suppliers</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10,280&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,611&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Professional and consulting fees</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,307&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,819&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current portion of revenue-share payments</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,210&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,731&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current portion of warranty and retrofit</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,377&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,076&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Customer advances or rebates</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,653&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,742&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Taxes payable</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,581&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,251&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Operating leases</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,949&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,596&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Freight</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,649&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,997&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Business events</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,167&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Product returns</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,961&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,836&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,527&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,773&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">90,474&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">71,597&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Changes in the Company&#8217;s accrued warranty and retrofit liability were as follows (in thousands):</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.076%"><tr><td style="width:1.0%"/><td style="width:60.044%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.456%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.195%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.456%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.195%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.456%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.198%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance at beginning of year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9,594&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9,208&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,294&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Provision for warranty and retrofit charged to cost of revenue</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,315&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,370&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,888&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Utilization of reserve</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(2,523)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(2,984)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(3,974)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance at end of year</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8,386&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9,594&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9,208&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Accrued Restructuring Charges</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company initiated a restructuring plan in 2020 to accelerate the Company&#8217;s platform future and to align with a work-from-anywhere culture. The Company incurred restructuring charges of approximately $6.3&#160;million, consisting of facilities-related charges and severance and other termination related benefits for the year ended December 31, 2020.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In the fourth quarter of 2021, as a result of subleasing the abandoned portion of the Company&#8217;s San Jose headquarters, the Company reversed $0.8&#160;million in facilities-related charges due to the expected recovery of accrued common areas maintenance fees.</span></div>As of December&#160;31, 2022, the Company had no accrued restructuring charges in the accompanying Consolidated Balance Sheet.<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetRelatedDisclosuresAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetRelatedDisclosuresAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SupplementalBalanceSheetDisclosuresTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for supplemental balance sheet disclosures, including descriptions and amounts for assets, liabilities, and equity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -URI https://asc.fasb.org/topic&amp;trid=2122208<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SupplementalBalanceSheetDisclosuresTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>24
<FILENAME>R12.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252663923888">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Commitments and Contingencies<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommitmentsAndContingenciesDisclosureAbstract', window );"><strong>Commitments and Contingencies Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock', window );">Commitments and Contingencies</a></td>
<td class="text">Commitments and Contingencies<div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Lease Commitments</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company leases office space under non-cancelable operating leases. Certain of the Company&#8217;s operating leases contain renewal options and rent acceleration clauses. Future minimum payments under the non-cancelable operating leases consisted of the following as of December&#160;31, 2022 (in&#160;thousands):</span></div><div style="margin-top:10pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"><tr><td style="width:1.0%"/><td style="width:75.546%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:6.834%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.320%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ending December 31,</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;Future Minimum Lease Payments</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2023</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,629&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2024</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,458&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2025</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,955&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2026 and thereafter</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">531&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total future minimum lease payments</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">13,573&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Less imputed interest</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,182)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 12.25pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">12,391&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:1pt"><span><br/></span></div><div style="margin-top:1pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2022, the operating lease liability consisted of the following (in thousands):</span></div><div style="margin-top:11pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:79.398%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:3.152%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.150%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzAtMC0xLTEtMzYxOTg_0eaed16b-5a85-4f40-8558-3b742d67e1cb">Accrued liabilities - current portion of operating leases</span></span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,949&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Operating leases</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8,442&#160;</span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">12,391&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-bottom:5pt;margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company leases its headquarters office space in San Jose, California under a lease agreement that expires in December 2025. The future minimum lease payments under the lease are $7.3 million and are included in the table for the year ended December&#160;31, 2022 above.</span></div><div style="margin-bottom:5pt;margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The above tables also include future minimum lease payments for the Company's office facilities in Petaluma, California; Plymouth, Minnesota; Richardson, Texas; Bangalore, India; Nanjing, China; and West Jordan, Utah, which expire at various dates through 2027.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In November 2021, the Company entered into a sublease for a portion of the San Jose headquarters office space that was previously abandoned. The sublease commenced in August 2022 for a term of 39 months. The Company received $0.3&#160;million in sublease income in 2022. Future minimum payments consisted of the following as of December&#160;31, 2022 (in&#160;thousands):</span></div><div style="margin-top:10pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"><tr><td style="width:1.0%"/><td style="width:75.546%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:6.834%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.320%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ending December 31,</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;Future Minimum Sublease Payments</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2023</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">750&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2024</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">773&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2025</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">661&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total future minimum sublease payments</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,184&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The weighted average discount rate for the Company&#8217;s operating leases as of December&#160;31, 2022 was 6.1%. The weighted average remaining lease term as of December&#160;31, 2022 was 3.0 years.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">For the years ended December&#160;31, 2022, 2021 and 2020, total rent expense of the Company was $4.6 million, $4.1 million and $4.0 million, respectively. Cash paid within operating cash flows for operating leases was $4.5&#160;million, $3.9 million and $3.8&#160;million for years ended December&#160;31, 2022, 2021 and 2020, respectively.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Purchase Commitments</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s CMs and ODMs place orders for certain component inventory in advance based upon the Company&#8217;s build forecasts in order to reduce manufacturing lead times and ensure adequate component supply. The components are used by the CMs and ODMs to build the products included in the build forecasts. The Company generally does not take ownership of the components held by CMs and ODMs. The Company places purchase orders with its CMs and ODMs in order to fulfill its monthly finished product inventory requirements. The Company incurs a liability when the CMs and ODMs convert the component inventory to a finished product and takes ownership of the finished goods inventory. In the event of termination of services with a manufacturing partner, the Company has purchased, and may be required to purchase in the future, certain of the </span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">remaining components inventory held by the CM or ODM as well as any outstanding orders pursuant to the contractual provisions with such CM or ODM. As of December&#160;31, 2022 and 2021, the Company had approximately $340.6 million and $247.3&#160;million, respectively, of outstanding purchase commitments for inventories to be delivered by its suppliers, including CMs and ODMs.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company has from time to time, and subject to certain conditions, reimbursed certain suppliers for component inventory purchases when this inventory has been rendered excess or obsolete, for example due to manufacturing and engineering change orders resulting from design changes, manufacturing discontinuation of products by its suppliers, or in cases where the Company has committed inventory levels that greatly exceed projected demand. The estimated excess and obsolete inventory liabilities related to such manufacturing and engineering change orders and other factors, which are included in accrued liabilities in the accompanying Consolidated Balance Sheets, were $10.3 million and $7.6 million as of December&#160;31, 2022 and 2021, respectively. The Company records the related charges in cost of systems revenue in its Consolidated Statements of Comprehensive Income.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Litigation</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">From time to time, the Company is involved in various legal proceedings arising from the normal course of business activities. The Company is not currently a party to any legal proceedings that, if determined adversely to the Company, in management&#8217;s opinion, are currently expected to individually or in the aggregate have a material adverse effect on the Company&#8217;s business, operating results or financial condition taken as a whole.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Indemnifications</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company from time to time enters into contracts that require it to indemnify various parties against claims from third parties. These contracts primarily relate to (i)&#160;certain real estate leases, under which the Company may be required to indemnify property owners for environmental and other liabilities, and other claims arising from the Company&#8217;s use of the applicable premises, (ii)&#160;agreements with the Company&#8217;s officers, directors and certain employees, under which the Company may be required to indemnify such persons for liabilities arising out of their relationship with the Company, (iii)&#160;contracts under which the Company may be required to indemnify customers against third-party claims that a Company product infringes a patent, copyright or other intellectual property right and (iv)&#160;agreements under which the Company may be required to indemnify the counterparty for certain claims that may be brought against them arising from the Company&#8217;s acts or omissions with respect to the transactions contemplated by such agreements.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Because any potential obligation associated with these types of contractual provisions are not quantified or stated, the overall maximum amount of the obligation cannot be reasonably estimated. Historically, the Company has not been required to make payments under these obligations, and no liabilities have been recorded for these obligations in the accompanying Consolidated Balance Sheets.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingenciesDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommitmentsAndContingenciesDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for commitments and contingencies.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 440<br> -URI https://asc.fasb.org/topic&amp;trid=2144648<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 954<br> -SubTopic 440<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=6491277&amp;loc=d3e6429-115629<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 450<br> -URI https://asc.fasb.org/topic&amp;trid=2127136<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 440<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=123406679&amp;loc=d3e25336-109308<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 440<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=123406679&amp;loc=d3e25336-109308<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommitmentsAndContingenciesDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>25
<FILENAME>R13.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661701920">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stockholders' Equity<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EquityAbstract', window );"><strong>Equity [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareholdersEquityAndShareBasedPaymentsTextBlock', window );">Stockholders' Equity</a></td>
<td class="text">Stockholders&#8217; Equity <div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Preferred Stock</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Board of Directors has the authority, without a further vote of the stockholders, to designate and issue up to 5.0 million shares of preferred stock in one or more series and to fix the rights, preferences, privileges and restrictions thereof. These rights, preferences and privileges could include dividend rights, conversion rights, voting rights, terms of redemption, liquidation preferences, sinking fund terms and the number of shares constituting any series or the designation of such series, any or all of which may be greater than the rights of common stock. The issuance of the Company&#8217;s preferred stock could adversely affect the voting power of holders of common stock and the likelihood that such holders will receive dividend payments and payments upon liquidation. In addition, the issuance of preferred stock could have the effect of delaying, deferring or preventing a change in control of the Company or other corporate action. Since the Company&#8217;s initial public offering, the Board of Directors has not designated any rights, preference or powers of any preferred stock, and no shares of preferred stock have been issued.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Common Stock</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Holders of the Company&#8217;s common stock are entitled to receive dividends, if any, as may be declared from time to time by the Board of Directors out of legally available funds. No dividends have been declared or paid as of December&#160;31, 2022.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In August 2020, the Company completed an underwritten public offering of 3,220,000 shares of its common stock at $20.00 per share, including a full exercise by the underwriters of their option to purchase an additional 420,000 shares of Common Stock, resulting in net proceeds of $60.1&#160;million, after deducting the underwriting discount and expenses paid by the Company.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Stock Repurchase Program</span></div><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In July 2022, the Company&#8217;s Board of Directors authorized a one-year stock repurchase program for up to $100&#160;million of the Company&#8217;s common stock. Under the repurchase program, repurchases can be made from time to time using a variety of </span></div><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">methods, which may include open market purchases, privately negotiated transactions or otherwise, all in accordance with the rules of the SEC and other applicable legal requirements. The specific timing, price and size of the purchases will depend on prevailing stock prices, general economic and market conditions, and other considerations consistent with the Company&#8217;s capital allocation strategy. The repurchase program does not obligate the Company to acquire a particular amount of common stock, and the repurchase program may be suspended or discontinued at any time at the Company&#8217;s discretion. During the year ended December&#160;31, 2022, no repurchases were made under the program.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Equity Incentive Plans</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Stock Options </span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">At the Company&#8217;s 2019 annual meeting of stockholders, the stockholders approved the 2019 Equity Incentive Award Plan (the &#8220;2019 Plan&#8221;). The 2019 Plan supersedes and replaces the 2010 Equity Incentive Award Plan (the &#8220;2010 Plan&#8221;) and preceding plans. The terms and conditions of the 2010 Plan will continue to govern any outstanding awards granted under the 2010 Plan.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Employees and consultants of the Company, its subsidiaries and affiliates and the Company&#8217;s Board of Directors members are eligible to receive awards under the 2019 Plan. The 2019 Plan provides for the grant of stock options, stock appreciation rights, restricted stock, restricted stock units or other stock or cash-based awards and dividend equivalents to eligible individuals.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">At the Company&#8217;s 2022 annual meeting of stockholders, the stockholders approved an increase in the number of shares of common stock issuable under the 2019 Plan by 1.5&#160;million shares. As of December&#160;31, 2022, there were 6.0 million shares available for issuance under the 2019 Plan. </span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock options granted under the 2019 Plan are granted at a price not less than 100% of the fair market value of the common stock on the date of grant. Stock options issued under the 2019 Plan generally vest 25%&#160;on the first anniversary of the vesting commencement date and on a quarterly basis thereafter for a period of an additional three years. The options have a maximum term of ten years.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In February 2021, PSOs exercisable for up to an aggregate of 0.7&#160;million shares of common stock were granted to certain Company executives with a grant date exercise price of $36.74 per share. The actual number of shares earned is contingent upon achievement of annual corporate financial targets for bookings and non-GAAP net income for 2021 (collectively, the &#8220;2021 Performance Targets&#8221;) during the one-year performance period. Under the 2021 Performance Targets, if the non-GAAP net income is below 80% of target or bookings are below 90% of target, no shares would be awarded. From this base, shares are awarded on a 50% weighting for both non-GAAP net income and bookings up to 100% for each 2021 Performance Target using a sliding scale.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In February 2022, the Compensation Committee of the Company&#8217;s Board of Directors certified the results against the 2021 Performance Targets and awarded 97% of PSOs subject to the four-year services condition. As such, 25% of the awarded shares of the PSOs were vested on that date, and the remaining 75% of the shares of common stock will vest in substantially equal quarterly installments over the subsequent 36 months, subject to the executive&#8217;s continuous service with the Company through the respective vesting dates. Stock-based compensation expense of $3.6&#160;million and $6.3&#160;million was recognized for the years ended December&#160;31, 2022 and 2021, respectively, related to these awards. Also, in February 2022, the Compensation Committee granted PSOs exercisable for up to an aggregate of 0.7&#160;million shares of common stock to certain Company executives with a grant date exercise price of $55.96 per share, using the same plan design as 2021 but with 2022 annual corporate financial targets for bookings and non-GAAP net operating income (collectively, the &#8220;2022 Performance Targets&#8221;).</span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:112%">In February 2023, the Compensation Committee of the Company&#8217;s Board of Directors certified the results against the 2022 Performance Targets and awarded 100% of PSOs subject to the four-year service condition. As such, 25% of the awarded shares of the PSOs were vested on that date, and the remaining 75% of the shares of common stock will vest in substantially equal quarterly installments over the subsequent 36 months, subject to the executive&#8217;s continuous service with the Company through the respective vesting dates. Stock-based compensation expense of $10.1&#160;million was recognized for the year ended December&#160;31, 2022 related to these awards.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the stock option activity under the Company&#8217;s equity incentive plans (in thousands, except per share data):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:90.058%"><tr><td style="width:1.0%"/><td style="width:42.406%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.585%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.237%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.585%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.237%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.585%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.237%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.585%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.243%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Weighted-</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Average</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Weighted-</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Remaining</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Average</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Contractual</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Aggregate</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Number of</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Exercise Price</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Life</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Intrinsic</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline">Stock Options</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Shares</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Per Share</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">(in years)</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;&#160;&#160;Value </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:5.2pt;font-weight:700;line-height:100%;position:relative;top:-2.8pt;vertical-align:baseline">(1)</span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Outstanding as of December 31, 2021</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,648&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">17.46&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,423&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">56.04&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Exercised</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(721)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9.28&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Canceled</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(63)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">35.74&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Outstanding as of December 31, 2022</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8,287&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">29.31&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7.5</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">325,828&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Vested and expected to vest as of&#160;December 31, 2022</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8,028&#160;</span></td><td style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">28.64&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7.4</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">321,015&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Options exercisable as of December 31, 2022</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,010&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">14.04&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6.1</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">218,143&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:underline">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="27" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:112%">(1) Amounts represent the difference between the exercise price and the fair market value of common stock at December 31, 2022 of $68.43 per share for all &#8220;in-the-money&#8221; options outstanding.</span></div></td></tr></table></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">During the years ended December&#160;31, 2022, 2021 and 2020, total intrinsic value of stock options exercised was $31.0 million, $59.6&#160;million and $6.7&#160;million, respectively. Cash received from employee stock option exercises in 2022, 2021 and 2020 was $6.7&#160;million, $11.2&#160;million and $0.9&#160;million, respectively.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Employee Stock Purchase Plans</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The ESPP allows eligible employees to purchase shares of the Company&#8217;s common stock through payroll deductions of up to 15% of their eligible compensation subject to certain Internal Revenue Code limitations. In addition, participants may purchase up to 2,000 shares of common stock in each offering period.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The offering periods under the ESPP are two six-month offering periods from August 15</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> through February 14</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> and February 15</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> through August 14</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> of each year. The price of common stock purchased under the ESPP is 85% of the lower of the fair market value of the common stock on the commencement date and the end date of each six-month offering period. At the Company&#8217;s 2022 annual meeting of stockholders, the stockholders approved an increase in the number of shares of common stock issuable under the ESPP by 1.3&#160;million shares. The total shares authorized for issuance under the ESPP increased from 11.1&#160;million shares to 12.4&#160;million shares. As of December&#160;31, 2022, there were 4.7&#160;million shares available for issuance under the ESPP. During the year ended December&#160;31, 2022, 0.2&#160;million shares were purchased under the ESPP. As of December&#160;31, 2022, unrecognized stock-based compensation expense of $0.4&#160;million related to the ESPP is expected to be recognized over a remaining service period of 0.1 years.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The NQ ESPP allows eligible employees to purchase shares of the Company&#8217;s common stock through payroll deductions of up to 25% of their eligible compensation. Eligible employees have the right to (a) purchase the maximum number of whole shares of common stock that can be purchased with the elected payroll deductions during each offering period for which the employee is enrolled at a purchase price equal to the closing price of the Company&#8217;s common stock on the last day of such offering period and (b) receive an equal number of shares of the Company&#8217;s common stock that are subject to a risk of forfeiture in the event the employee terminates employment within the one year period immediately following the purchase date. Beginning in the second quarter of 2022, the NQ ESPP provides quarterly offering periods from May 8</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> through August 7</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">, August 8</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> through November 7</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">, November 8</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> through February 7</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> and February 8</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> through May 7</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">of each year. A transition period began on May 15</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> and ended on August 7</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">th</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">. At the Company&#8217;s 2022 annual meeting of stockholders, the stockholders approved an increase in the number of shares of common stock issuable under the NQ ESPP by 0.8&#160;million shares. The maximum number of shares of common stock currently authorized for issuance under the NQ ESPP is 6.3&#160;million shares, with a maximum of 0.3&#160;million shares allocated per purchase period. As of December&#160;31, 2022, there were 3.0&#160;million shares available for issuance under the NQ ESPP, including the stockholder-approved 0.8&#160;million share increase. During the year ended December&#160;31, 2022, 0.6&#160;million shares were purchased and issued. As of December&#160;31, 2022, unrecognized stock-based compensation expense of $9.3&#160;million related to the NQ ESPP is expected to be recognized over a remaining weighted-average service period of 0.8 years.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Stock-Based Compensation</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes stock-based compensation expense (in thousands):</span></div><div style="margin-top:10pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:50.215%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.408%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.519%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.408%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.519%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.408%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.523%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cost of revenue:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Products</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,666&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">790&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">575&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Services</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,034&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">668&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">450&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Sales and marketing</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">12,001&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,728&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,273&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Research and development</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">12,165&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,769&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,736&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">General and administrative</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">17,960&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9,275&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,926&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">44,826&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">24,230&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">13,960&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Income tax benefits recognized</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">11,501&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">16,929&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the weighted-average grant date fair values of the Company&#8217;s stock-based awards granted in the periods indicated:</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:86.111%"><tr><td style="width:1.0%"/><td style="width:55.096%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.667%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.633%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.667%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.633%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.667%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.637%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock options</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">31.86&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">26.55&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8.55&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">ESPP</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">18.51&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">12.93&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5.52&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">NQ ESPP</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">52.91&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">55.50&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">19.40&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company values employee stock purchase rights under the NQ ESPP at the closing market price of the Company&#8217;s common stock on the date of grant.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company estimates the fair value of stock options and employee stock purchase right under the ESPP at the grant date using the Black-Scholes option-pricing model. This model requires the use of the following assumptions:</span></div><div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(i)</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:8.57pt">Expected volatility of the Company&#8217;s common stock &#8211; The Company computes its expected volatility assumption based on a blended volatility (50% historical volatility and 50% implied volatility from traded options on the Company&#8217;s common stock). The selection of a blended volatility assumption was based upon the Company&#8217;s assessment that a blended volatility is more representative of the Company&#8217;s future stock price trend as it weighs the historical volatility with the future implied volatility.</span></div><div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(ii)</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:5.8pt">Expected life of the option award &#8211; Represents the weighted-average period that the stock options are expected to remain outstanding. The Company&#8217;s computation of expected life utilizes the simplified method in accordance with Staff Accounting Bulletin No.&#160;110 due to the lack of sufficient historical exercise data to provide a reasonable basis upon which to estimate expected term.&#160;The mid-point between the vesting date and the expiration date is used as the expected term under this method.</span></div><div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(iii)</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:3.03pt">Expected dividend yield &#8211; The assumption is zero based on the Company&#8217;s history of not paying dividends and no future expectations of dividend payouts.</span></div><div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(iv)</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:3.57pt">Risk-free interest rate &#8211; Based on the U.S. Treasury yield curve in effect at the time of grant with maturities approximating the grant&#8217;s expected life.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the weighted-average assumptions used in estimating the grant-date fair value of stock options and of each employee&#8217;s purchase right under the ESPP in the periods indicated:</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"/><td style="width:56.395%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.259%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline">Stock Options</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Expected volatility</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">58&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">56&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">53&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Expected life (years)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6.1</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6.0</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6.1</span></td></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Risk-free interest rate</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3.15&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1.11&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.48&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr></table></div><div style="text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"/><td style="width:56.395%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.259%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline">ESPP</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Expected volatility</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">63&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">70&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Expected life (years)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.5</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.5</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.4</span></td></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Risk-free interest rate</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2.16&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.05&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.12&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr></table></div><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In addition, the Company applies an estimated forfeiture rate to awards granted and records stock-based compensation expense only for those awards that are expected to vest. Forfeiture rates are estimated at the time of grant based on the Company&#8217;s historical experience. Further, to the extent the Company&#8217;s actual forfeiture rate is different from management&#8217;s estimate, stock-based compensation is adjusted accordingly.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2022, unrecognized stock-based compensation expense by award type, net of estimated forfeitures, and their expected weighted-average recognition periods are summarized in the following table (in thousands).</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:63.304%"><tr><td style="width:1.0%"/><td style="width:58.715%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:2.340%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:16.451%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td style="width:0.1%"/><td style="width:2.340%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:16.454%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Stock Option</span></td><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">ESPPs</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Unrecognized stock-based compensation expense</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">73,095&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9,781&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Weighted-average amortization period (in years)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2.3</span></td><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.8</span></td></tr></table></div><div style="margin-top:1pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company expects to recognize stock-based compensation expense of $37.2 million in 2023, $22.0 million in 2024, $16.0 million in 2025 and $7.7 million in 2026. </span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Shares Reserved for Future Issuance </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2022, the Company had common shares reserved for future issuance as follows (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:77.631%"><tr><td style="width:1.0%"/><td style="width:82.704%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.871%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.025%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock options outstanding</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8,287&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Shares available for future grant under 2019 Plan</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,986&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Shares available for future issuance under ESPP</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,712&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Shares available for future issuance under NQ ESPP</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,043&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 12.25pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">22,028&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EquityAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EquityAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareholdersEquityAndShareBasedPaymentsTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for shareholders' equity and share-based payment arrangement. Includes, but is not limited to, disclosure of policy and terms of share-based payment arrangement, deferred compensation arrangement, and employee stock purchase plan (ESPP).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -URI https://asc.fasb.org/topic&amp;trid=2208762<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -URI https://asc.fasb.org/topic&amp;trid=2228938<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareholdersEquityAndShareBasedPaymentsTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>26
<FILENAME>R14.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252662587408">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Employee Benefit Plan<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CompensationAndRetirementDisclosureAbstract', window );"><strong>Retirement Benefits [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CompensationAndEmployeeBenefitPlansTextBlock', window );">Employee Benefit Plan</a></td>
<td class="text">Employee Benefit PlanThe Company sponsors a 401(k) tax-deferred savings plan for all employees who meet certain eligibility requirements. Participants may contribute, on a pre-tax basis, a percentage of their annual compensation, but not to exceed a maximum contribution amount pursuant to Section&#160;401(k) of the Internal Revenue Code. The Company, at the discretion of the Board of Directors, may make additional matching contributions on behalf of the participants. The Company made matching contributions totaling $4.1 million, $3.2 million and $2.7 million in 2022, 2021 and 2020, respectively.<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CompensationAndEmployeeBenefitPlansTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for an entity's employee compensation and benefit plans, including, but not limited to, postemployment and postretirement benefit plans, defined benefit pension plans, defined contribution plans, non-qualified and supplemental benefit plans, deferred compensation, share-based compensation, life insurance, severance, health care, unemployment and other benefit plans.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -URI https://asc.fasb.org/topic&amp;trid=2228938<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 712<br> -URI https://asc.fasb.org/topic&amp;trid=2197446<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 710<br> -URI https://asc.fasb.org/topic&amp;trid=2127225<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -URI https://asc.fasb.org/topic&amp;trid=2235017<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CompensationAndEmployeeBenefitPlansTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CompensationAndRetirementDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CompensationAndRetirementDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>27
<FILENAME>R15.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661563632">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Accumulated Other Comprehensive Loss<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EquityAbstract', window );"><strong>Equity [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNoteTextBlock', window );">Accumulated Other Comprehensive Loss</a></td>
<td class="text">Accumulated Other Comprehensive Loss<div style="margin-top:6pt;text-indent:4.5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The table below summarizes the changes in accumulated other comprehensive loss by component:</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:80.263%"><tr><td style="width:1.0%"/><td style="width:51.905%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.710%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.561%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.803%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.654%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.803%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.564%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized Gains and Losses on Available-for-Sale Marketable Securities</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Foreign Currency Translation Adjustments</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total</span></td></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(191)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(191)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other comprehensive income (loss)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(179)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">50&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(129)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(179)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(141)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(320)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other comprehensive loss</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,521)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(632)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(2,153)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance as of December 31, 2022</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,700)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(773)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(2,473)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Assets and liabilities of the Company&#8217;s wholly owned foreign subsidiaries are translated from their respective functional currencies at exchange rates in effect at the balance sheet date, and revenue and expenses are translated at the monthly average exchanges rates. These translations result in differences called foreign currency translation adjustments. Realized foreign currency transaction gains or losses were not significant during the years ended December&#160;31, 2022, 2021 and 2020 and are recorded in &#8220;Other income (expense), net&#8221; in the Company's Consolidated Statements of Comprehensive Income. Realized gains and losses on sales of available-for-sale marketable securities, if any, are reclassified from accumulated other comprehensive loss to &#8220;Other income (expense), net&#8221; in our Consolidated Statements of Comprehensive Income.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ComprehensiveIncomeNoteTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for comprehensive income, which includes, but is not limited to, 1) the amount of income tax expense or benefit allocated to each component of other comprehensive income, including reclassification adjustments, 2) the reclassification adjustments for each classification of other comprehensive income and 3) the ending accumulated balances for each component of comprehensive income.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -URI https://asc.fasb.org/topic&amp;trid=2134417<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(21))<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(23))<br> -URI https://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(19))<br> -URI https://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ComprehensiveIncomeNoteTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EquityAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EquityAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>28
<FILENAME>R16.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661431376">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Income Taxes<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxDisclosureAbstract', window );"><strong>Income Tax Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxDisclosureTextBlock', window );">Income Taxes</a></td>
<td class="text">Income Taxes <div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The domestic and foreign components of income before incomes taxes were as follows (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"/><td style="width:56.395%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.259%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Domestic</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">51,442&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">70,776&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">33,777&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,600&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,878&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">507&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">54,042&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">72,654&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">34,284&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="text-indent:18pt"><span><br/></span></div><div style="margin-top:9pt;text-indent:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Income taxes consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"/><td style="width:56.395%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.259%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Federal</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,671&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">State</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,555&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,818&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">285&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">874&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">438&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">507&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current income tax</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">11,100&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,256&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">792&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Federal</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,336&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(157,355)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">State</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(4,372)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(11,631)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(32)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred income tax</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,932&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(168,980)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 37pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">13,032&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(165,724)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">800&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The differences between the statutory and effective tax rates, expressed as a percentage of net income before income taxes, were as follows:</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"/><td style="width:56.395%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.259%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Federal statutory rate</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">21.0&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">21.0&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">21.0&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Impact of state taxes</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1.4&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(15.6)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.1&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign operations</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(0.2)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.6&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">R&amp;D tax credits</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(7.4)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1.4&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(4.8)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign income inclusion</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1.0&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock-based compensation</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(12.8)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(4.1)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other permanent items</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(0.2)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(0.3)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.6&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Tax true-up</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(0.2)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(0.4)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Valuation allowance</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(4.0)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(208.3)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(48.1)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net operating loss expiration / attribute expiration</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5.5&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(13.1)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">37.4&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Base erosion anti-abuse tax</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6.8&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">24.1&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(228.1)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2.3&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr></table></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The significant components of the Company&#8217;s deferred tax assets were as follows (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"><tr><td style="width:1.0%"/><td style="width:70.610%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.609%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.235%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.609%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.237%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred tax assets:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net operating loss carryforwards</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">44,189&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">82,672&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Tax credit carryforwards</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">56,717&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">52,538&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accruals and reserves</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">11,679&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10,302&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred revenue</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">13,156&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">11,351&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock-based compensation</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,417&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,921&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Capitalized R&amp;D</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">67,932&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">38,842&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Gross deferred tax assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">201,090&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">200,626&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Valuation allowance</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(29,914)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(29,236)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total deferred tax assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">171,176&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">171,390&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred tax liabilities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Fixed assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(2,648)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,511)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Intangible assets</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,497)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(917)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total deferred tax liabilities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(4,145)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(2,428)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 25.75pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">167,031&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">168,962&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:1pt"><span><br/></span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">All deferred taxes, along with any related valuation allowance, are classified in the Consolidated Balance Sheet as long-term.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A valuation allowance is required when, based upon an assessment of various factors, including recent operating loss history, anticipated future earnings, and prudent and reasonable tax planning strategies, it is more likely than not that some portion of the deferred tax assets will not be realized. At each reporting period, the Company assesses the estimated future realizability of the gross carrying value of its deferred tax assets. The Company&#8217;s periodic assessments take into consideration both positive evidence (future profitability projections for example and recent financial performance) and negative evidence (historical financial performance for example) as it relates to evaluating the future recoverability of its deferred tax assets. During 2021, the Company released its valuation allowance for federal and state (with the exception of California) deferred tax assets that are more likely than not to be realized, primarily as a result of actual and projected increases in U.S. profitability in the current and future periods. In performing its analysis, the Company used the most updated plans and estimates that it currently uses to manage the underlying business and calculated the ability to utilize its deferred tax assets. The valuation allowance increased by $0.7&#160;million from 2021 to 2022. The Company continues to maintain a valuation allowance of $29.9&#160;million on certain U.S. federal and state deferred tax assets that the Company believes are not more likely than not to be realized in future periods.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2022, the Company had U.S. federal and state net operating losses of approximately $205.2&#160;million and $24.0&#160;million, respectively. The U.S. federal net operating loss carryforwards will expire at various dates through 2039 if not utilized. The state net operating loss carryforwards will expire at various dates through 2039 if not utilized. Additionally, the Company has U.S. federal, California and other U.S. states research and development credits of approximately $40.7&#160;million, $47.0&#160;million and $2.7&#160;million as of December&#160;31, 2022, respectively. The U.S. federal research and development credits have begun to expire in 2022 and will continue to expire at various dates through 2042. The California research and development credits have no expiration date. The credits related to other various U.S. states have begun to expire and will continue to expire at various dates through 2036.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Uncertain Tax Positions</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">ASC 740, </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">&#8220;Income Taxes,&#8221;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> prescribes a recognition threshold and measurement attribute to the financial statement recognition and measurement of a tax position taken or expected to be taken in a tax return. The guidance also provides guidance on derecognition, classification, accounting in interim periods and disclosure requirements for uncertain tax positions. The standard requires the Company to recognize the financial statement effects of an uncertain tax position when it is more likely than not that such position will be sustained upon audit. The Company recognizes accrued interest and penalties related to unrecognized tax benefits as interest expense and income tax expense, respectively, in its Consolidated Statements of Comprehensive Income.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table reconciles the Company&#8217;s unrecognized tax benefits (in thousands):</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"><tr><td style="width:1.0%"/><td style="width:70.610%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.609%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.235%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.609%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.237%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance at beginning of year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">25,992&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,516&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;&#160;&#160;Reduction for tax positions related to prior year</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(905)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,427)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;&#160;&#160;Additions for tax positions related to prior year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,232&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,947&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;&#160;&#160;Additions for tax positions related to current year</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,896&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,956&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance at end of year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">29,215&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">25,992&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2022 and 2021, the Company had unrecognized tax benefits of $29.2&#160;million and $26.0&#160;million, respectively, $15.3&#160;million of which would affect the Company&#8217;s effective tax rate if recognized. There were no accrued interest or penalties for uncertain income tax as of December&#160;31, 2022.</span></div><div style="margin-bottom:6pt;margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company files tax returns in the United States and various state jurisdictions, China, India and the United Kingdom. The tax years 2000 through 2021 remain open and subject to examination by the appropriate governmental agencies due to tax attribute carryforwards.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for income taxes. Disclosures may include net deferred tax liability or asset recognized in an enterprise's statement of financial position, net change during the year in the total valuation allowance, approximate tax effect of each type of temporary difference and carryforward that gives rise to a significant portion of deferred tax liabilities and deferred tax assets, utilization of a tax carryback, and tax uncertainties information.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 21<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32857-109319<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 11.C)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330215-122817<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 17<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32809-109319<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I.5.Q1)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 14<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32705-109319<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 270<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6424409&amp;loc=d3e44925-109338<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -URI https://asc.fasb.org/topic&amp;trid=2144680<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=6424122&amp;loc=d3e41874-109331<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(2))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>29
<FILENAME>R17.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661548224">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Net Income Per Common Share<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EarningsPerShareAbstract', window );"><strong>Earnings Per Share [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EarningsPerShareTextBlock', window );">Net Income Per Common Share</a></td>
<td class="text">Net Income Per Common Share<div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table sets forth the computation of basic and diluted net income per common share for the periods indicated (in thousands, except per share data):</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"/><td style="width:56.395%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.259%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Numerator:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net income</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">41,010&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">238,378&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">33,484&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Denominator:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Weighted-average common shares &#8212; basic</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">65,058&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">63,277&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">59,074&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Effect of dilutive potential common shares</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,853&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,579&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,924&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Weighted-average common shares &#8212; diluted</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">68,911&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">67,856&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">61,998&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr style="height:9pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Basic net income per common share</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.63&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3.77&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.57&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Diluted net income per common share</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.60&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3.51&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.54&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Potentially dilutive shares excluded, weighted-average</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,758&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,006&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">753&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Unvested restricted stock awards are included in the calculation of basic weighted-average shares because such shares are participating securities; however, the impact was immaterial.</span></div><div style="margin-bottom:6pt;margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Potentially dilutive shares have been excluded from the computation of diluted net income per common share when their effect is antidilutive. These antidilutive shares were primarily from stock options.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for earnings per share.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI https://asc.fasb.org/extlink&amp;oid=109243012&amp;loc=SL65017193-207537<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -URI https://asc.fasb.org/topic&amp;trid=2144383<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3630-109257<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>30
<FILENAME>R18.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661492064">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Revenue from Contracts with Customers<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerAbstract', window );"><strong>Revenue from Contract with Customer [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SegmentReportingDisclosureTextBlock', window );">Revenue from Contracts with Customers</a></td>
<td class="text">Revenue from Contracts with CustomersThe Company develops, markets and sells a broadband platform and managed services, and there are no segment managers who are held accountable for operations, operating results and plans for levels or components below the Company unit level. Accordingly, the Company is considered to be in a single reporting segment and operating unit structure. The Company&#8217;s chief operating decision maker is the Company&#8217;s Chief Executive Officer, who reviews financial information presented on a Company-wide basis, for purposes of allocating resources and evaluating financial performance.<div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Geographic Information:</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following is a summary of revenue disaggregated by geographic region based upon the location of the customers (in thousands):</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"/><td style="width:56.395%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.259%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">United States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">786,802&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">565,964&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">473,779&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Americas excluding U.S.</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">41,892&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">45,719&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">27,802&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">26,916&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">45,879&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">22,925&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Middle East &amp; Africa</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10,885&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">19,018&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">14,075&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Asia Pacific</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,332&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,814&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,658&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 7.75pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">867,827&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">679,394&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">541,239&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s property and equipment, net of accumulated depreciation, are located in the following geographical areas (in thousands):</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"><tr><td style="width:1.0%"/><td style="width:70.610%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.609%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.235%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.609%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.237%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">United States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">21,785&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">19,900&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">China</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,220&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,840&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">India</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">829&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">43&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 7.75pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">25,834&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">21,783&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Contract Asset</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The primary contract asset is revenue recognized on professional services contracts where the services are transferred to the customer over time, which has yet to be billed, and is classified to remaining performance obligations within accounts receivable. Amounts are billed in accordance with the agreed-upon contractual terms. The balance as of December&#160;31, 2022 was $2.3&#160;million of which the Company expects to bill 81% of the balance during 2023. The balance as of December&#160;31, 2021 was $1.7&#160;million of which $0.3&#160;million remained in the Company's Consolidated Balance Sheet at December&#160;31, 2022. The increase in the contract asset was driven by the timing and volume of professional services contracts.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Contract Liability</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Deferred revenue was $58.6&#160;million and $49.5&#160;million as of December&#160;31, 2022 and 2021, respectively. The increase in deferred revenue of $9.1&#160;million is primarily driven by cash payments received or due in advance of satisfying the Company's performance obligations during the year being greater than the $26.8&#160;million of revenue recognized that was included in the deferred revenue balance at the beginning of the year.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue allocated to remaining performance obligations represent contract revenue that has not yet been recognized, which includes deferred revenue and amounts that will be invoiced and recognized as revenue in future periods. This amount was $199.0 million as of December&#160;31, 2022, and the Company expects to recognize 35% of such revenue over the next 12 months and the remainder thereafter.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Contract Costs</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company capitalizes certain sales commissions related primarily to multi-year subscriptions and extended warranty support for which the expected amortization period is greater than one year. As of December&#160;31, 2022 and 2021, the unamortized balance of deferred commissions was $11.2&#160;million and $7.4 million, respectively.&#160;For the year ended December&#160;31, 2022 the amount of amortization was $4.0&#160;million, compared to $1.4 million for the year ended December&#160;31, 2021. There was no impairment loss in relation to the costs capitalized for either period.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Concentration of Customer Risk</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">No customer accounted for more than 10% of the Company&#8217;s revenue for the years ended December&#160;31, 2022 and 2021. Lumen Technologies, Inc. (formerly CenturyLink, Inc.), the Company&#8217;s only greater-than-10%-of-revenue customer, represented 11% of revenue for the year ended December 31, 2020.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">One customer represented 11% of the Company&#8217;s accounts receivable as of December&#160;31, 2022. Another customer represented 12% of the Company&#8217;s accounts receivable as of December&#160;31, 2021.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SegmentReportingDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for reporting segments including data and tables. Reportable segments include those that meet any of the following quantitative thresholds a) it's reported revenue, including sales to external customers and intersegment sales or transfers is 10 percent or more of the combined revenue, internal and external, of all operating segments b) the absolute amount of its reported profit or loss is 10 percent or more of the greater, in absolute amount of 1) the combined reported profit of all operating segments that did not report a loss or 2) the combined reported loss of all operating segments that did report a loss c) its assets are 10 percent or more of the combined assets of all operating segments.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8924-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 34<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8981-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 21<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8721-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 40<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e9031-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (e)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 26<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8844-108599<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e9038-108599<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (d)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 42<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e9054-108599<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8657-108599<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 21<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8721-108599<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -URI https://asc.fasb.org/topic&amp;trid=2134510<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SegmentReportingDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>31
<FILENAME>R19.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252659440464">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Description of Business and Significant Accounting Policies (Policies)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccountingPoliciesAbstract', window );"><strong>Accounting Policies [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BasisOfAccountingPolicyPolicyTextBlock', window );">Basis of Presentation and Accounting Guidance</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Basis of Presentation and Accounting Guidance</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The accompanying consolidated financial statements have been prepared in accordance with the requirements of the U.S. Securities and Exchange Commission (&#8220;SEC&#8221;) and U.S. generally accepted accounting principles (&#8220;GAAP&#8221;). All significant intercompany balances and transactions have been eliminated in consolidation. Any reference in these notes to applicable accounting guidance is meant to refer to the authoritative U.S. GAAP as found in the Financial Accounting Standards Board (&#8220;FASB&#8221;) Accounting Standards Codification (&#8220;ASC&#8221;).</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_UseOfEstimates', window );">Use of Estimates</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Use of Estimates</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The preparation of financial statements is in conformity with U.S. GAAP, which requires management to make estimates and assumptions that affect the amounts reported in the consolidated financial statements and accompanying notes. For the Company, these estimates include, but are not limited to: allowances for doubtful accounts and sales returns, excess and obsolete inventory, allowances for obligations to its contract manufacturers, valuation of stock-based compensation, useful lives assigned to long-lived assets, standard and extended warranty costs, realizability of deferred tax assets and uncertain tax positions and contingencies. Actual results could differ from those estimates, and such differences could be material to the Company&#8217;s financial position and results of operations.</span></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerPolicyTextBlock', window );">Revenue Recognition, Contract Costs, and Deferred Revenue</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Revenue Recognition</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue is recognized when a performance obligation is satisfied, which occurs 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 to in exchange for those goods or services. Revenue from sales of access and premises systems is recognized when control is transferred to the customer, which is generally when the products are shipped. Revenue from software platform licenses, which provides the customer with a right to use the software as it exists, is generally recognized upfront when made available to the customer. Revenue from cloud-based software subscriptions, customer support, maintenance, extended warranty subscriptions and managed services is generally recognized ratably over the contract term. Revenue from professional services and training is recognized as the services are delivered.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A performance obligation is a promise in a contract to transfer a distinct good or service to the customer and is the unit of account. A contract&#8217;s transaction price is allocated to each distinct performance obligation and recognized as revenue when, or as, the performance obligation is satisfied. The Company&#8217;s hardware products contain both software and non-software components that function together to deliver the products&#8217; essential functionality and therefore constitutes a single performance obligation as the promise to transfer the individual software and non-software components is not separately identifiable and, therefore, not distinct. Cloud-based software subscriptions can include multi-year agreements with a fixed annual fee for a minimum committed usage level. To the extent that minimum committed usage level each year varies, the Company has concluded that each year represents a distinct stand-ready performance obligation and the transaction price allocated to each performance obligation is recognized as revenue ratably over each annual period. The Company&#8217;s contracts may include multiple performance obligations. For such arrangements, the Company allocates the contract&#8217;s transaction price to each performance obligation using the relative stand-alone selling price of each distinct good or service in the contract. The Company generally determines stand-alone selling prices based on the prices charged to customers or its best estimate of stand-alone selling price. The Company&#8217;s estimate of stand-alone selling price is established considering multiple factors including, but not limited to, geographies, market conditions, competitive landscape, internal costs, gross margin objectives, characteristics of targeted customers and pricing practices. The determination of estimated stand-alone selling price is made through consultation with and formal approval by management, taking into consideration the go-to-market strategy.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Contract Costs</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company capitalizes certain sales commissions related primarily to multi-year cloud-based software subscriptions and extended warranty support contracts.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Capitalized commissions are amortized as sales and marketing expenses over the period that the related revenue is recognized, which can be up to five years for extended warranty. The Company classifies the unamortized portion of deferred commissions as current or noncurrent based on the timing of when the Company expects to recognize the expense. The current and noncurrent portions of deferred commissions are included in &#8220;Prepaid expenses and other current assets&#8221; and &#8220;Other assets,&#8221; respectively, in the Company&#8217;s Consolidated Balance Sheets.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Deferred Revenue</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Deferred revenue results from transactions where the Company billed the customer for products or services and when cash payments are received or due prior to transferring control of the promised goods or services to the customer. </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Payment terms to customers typically range from net&#160;30&#160;to net&#160;90&#160;days and vary by the size and location of customer and the products or services offered. The period between the transfer of control of the promised good or service to a customer and when payment is due is not significant.</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CostOfSalesPolicyTextBlock', window );">Cost of Revenue</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Cost of Revenue</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cost of revenue consists primarily of finished goods inventory purchased from the Company&#8217;s contract manufacturers, payroll and related expenses associated with managing the relationships with contract manufacturers, depreciation of manufacturing test equipment, warranty and retrofit costs, excess and obsolete inventory costs, allowances for obligations to its contract manufacturers, shipping charges and amortization of certain intangible assets. It also includes contractor and other costs of services incurred directly related to the delivery of services to customers.</span></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StandardProductWarrantyPolicy', window );">Warranty and Retrofit</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Warranty and Retrofit</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company offers limited warranties for its hardware products for a period of <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1NQ_52e60d60-98c1-49fa-aeb6-aa5951b471ac">one</span>, <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1OQ_d86fb7cc-3137-407d-b8ce-6c28a7e598e4">three</span> or five years, depending on the product type. The Company recognizes estimated costs related to warranty activities as a component of cost of revenue upon product shipment or upon identification of a specific product failure. Under certain circumstances, the Company also provides fixes on specifically identified performance failures for products that are outside of the standard warranty period and recognizes estimated costs related to retrofit activities as a component of cost of revenue upon identification of such product failures. The Company recognizes estimated warranty and retrofit costs when it is probable that a liability has been incurred and the amount of loss is reasonably estimable. The estimates are based upon historical and projected product failure and claim rates, historical costs incurred in correcting product failures and information available related to any specifically identified product failures. Judgment is required in estimating costs associated with warranty and retrofit activities, and the Company's estimates are limited to information available to the Company at the time of such estimates. In some cases, such as when a specific product failure is first identified or a new product is introduced, the Company may initially have limited information and limited historical failure and claim rates upon which to base its estimates, and such estimates may require revision in future periods. The recorded amount is adjusted from time to time for specifically identified warranty and retrofit exposure. Actual warranty and retrofit expenses are charged against the Company&#8217;s estimated warranty and retrofit liability when incurred. Factors that affect the Company&#8217;s warranty and retrofit liability include the number of active installed units and historical and anticipated rates of warranty and retrofit claims and cost per claim.</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy', window );">Stock-Based Compensation</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Stock-Based Compensation</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock-based compensation expense associated with stock options and purchase rights under the Amended and Restated Employee Stock Purchase Plan (the &#8220;ESPP&#8221;) and the Amended and Restated 2017 Nonqualified Employee Stock Purchase Plan (the &#8220;NQ ESPP&#8221;) is measured at the grant date based on the fair value of the award and is recognized, net of forfeitures, as expense over the remaining requisite service period (generally the vesting period) on a straight-line basis.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair value of stock option and employee stock purchase right under the ESPP is estimated at the grant date using the Black-Scholes option valuation model. The fair value of the employee stock purchase right under the NQ ESPP is based on closing market price of the Company&#8217;s common stock on the date of grant.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock-based compensation expense associated with performance stock options (&#8220;PSOs&#8221;) with graded vesting features and which contain both a performance and a service condition is measured based on fair value of stock options estimated at the grant date using the Black-Scholes option valuation model, and is recognized, net of forfeitures, as expense over the requisite service period using the graded vesting attribution method.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Compensation expense is only recognized if the Company has determined that it is probable that the performance condition will be met. The Company reassesses the probability of vesting at each reporting period and adjusts compensation expense based on its probability assessment.</span></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommitmentsAndContingenciesPolicyTextBlock', window );">Loss Contingencies</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Loss Contingencies</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">From time to time, the Company is involved in legal proceedings arising from the normal course of business activities. The Company evaluates the likelihood of an unfavorable outcome of legal proceedings to which it is a party and accrues a loss contingency when the loss is probable and reasonably estimable. Assessing legal contingencies involves significant judgment and estimates, and the outcome of litigation is inherently uncertain and subject to numerous factors outside the Company&#8217;s control. Significant judgment is required when the Company assesses the likelihood of any adverse judgments or outcomes, including the potential range of possible losses, and whether losses are probable and reasonably estimable.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Because of uncertainties related to these matters, the Company bases its estimates of whether a loss contingency is probable or reasonably possible, as well as the reasonable range of possible losses associated with each loss contingency, only on the information available at the time. As additional information becomes available, and at least quarterly, the Company reassesses the potential liability on each significant matter and may revise its estimates. These revisions could have a material impact on the Company&#8217;s business, operating results or financial condition. The actual outcome of these legal proceedings may materially differ from the Company&#8217;s estimates of potential liability, which could have a material adverse effect on the Company&#8217;s business, operating results or financial condition.</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ConcentrationRiskCreditRisk', window );">Credit Risk and Inventory Supplier Concentrations</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Credit Risk and Inventory Supplier Concentrations</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Financial instruments that potentially subject the Company to significant concentrations of credit risk consist primarily of cash, cash equivalents, marketable securities and accounts receivable. Cash equivalents consist of money market funds and marketable securities with a maturity at the date of purchase of ninety days or less, which are invested through financial institutions in the United States. Deposits in and investments held by these financial institutions may, at times, exceed federally insured limits. The Company has not experienced any losses in such accounts. The Company also has approximately $2.7 million of cash held by its foreign subsidiaries in India, China and the United Kingdom. Management believes that the financial institutions that hold the Company&#8217;s cash and cash equivalents are financially sound and, accordingly, minimal credit risk exists with respect to these cash and cash equivalents.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company depends primarily on a small number of outside contract manufacturers (&#8220;CMs&#8221;) and original design manufacturers (&#8220;ODMs&#8221;) for the bulk of its finished goods inventory. The Company generally purchases its products through purchase orders with its suppliers. While the Company seeks to maintain a sufficient supply of its products, the Company&#8217;s business and results of operations could be adversely affected by a stoppage or delay in receiving such products, the receipt of defective parts, an increase in price of such products or the Company&#8217;s inability to obtain lower prices from its CMs, ODMs and other suppliers in response to competitive pressures.</span></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueOfFinancialInstrumentsPolicy', window );">Fair Value of Financial Instruments</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Fair Value of Financial Instruments</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The carrying amounts of cash and cash equivalents, trade receivables, accounts payable and other accrued liabilities approximate their fair value due to their relatively short-term nature. Marketable securities are valued using quoted market prices in active markets to determine fair value.</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock', window );">Cash, Cash Equivalents, and Marketable Securities</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Cash, Cash Equivalents and Marketable Securities</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cash equivalents and marketable securities are stated at amounts that approximate fair value based on quoted market prices.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company has invested its excess cash primarily in money market funds and highly liquid marketable securities such as U.S. treasury securities, corporate debt instruments, commercial paper and U.S. government securities. The Company considers all investments with maturities of three months or less when purchased to be cash equivalents. Marketable securities represent highly liquid U.S. treasury securities, corporate debt instruments, commercial paper and U.S. government securities with maturities greater than 90 days at date of purchase. Marketable securities with maturities greater than one year are classified as current because management considers all marketable securities to be available for current operations.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s investments have been classified and accounted for as available-for-sale. Such investments are recorded at fair value and unrealized holding gains and losses are reported as a separate component of comprehensive loss in the stockholders&#8217; equity until realized. Realized gains and losses on sales of marketable securities, if any, are determined on the specific identification method and are reclassified from accumulated other comprehensive loss to results of operations as &#8220;Other income (expense), net.&#8221; Realized gains and losses were not significant for the years ended December&#160;31, 2022 and 2021, respectively.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">For the Company&#8217;s available-for-sale debt securities in an unrealized loss position, the Company determines whether a credit loss exists. In this assessment, among other factors, the Company considers the extent to which the fair value is less than the amortized cost, any changes to the rating of the security by a rating agency, and adverse conditions specifically related to the security. If factors indicate a credit loss exists, an allowance for credit loss will be recorded to &#8220;Other income (expense), net,&#8221; limited by the amount that the fair value is less than the amortized cost basis. The amount of fair value change relating to all other factors will be recognized in other comprehensive loss.</span></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy', window );">Allowance for Doubtful Accounts</a></td>
<td class="text"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Allowance for Doubtful Accounts</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company maintains an allowance for doubtful accounts for expected credit losses at contract inception resulting from the inability of its customers to make required payments. The Company records a specific allowance and revises the expected loss based on an analysis of individual past-due balances. Additionally, based on historical write-offs and the Company&#8217;s collection experience, the Company records an additional allowance based on a percentage of outstanding receivables. The Company performs credit evaluations of its customers&#8217; financial condition. These evaluations require judgment and are based on a variety of factors including, but not limited to, current economic trends, payment history and a financial review of the customer. Actual collection losses may differ from management&#8217;s estimates, and such differences could be material to the Company's financial position and results of operations.</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InventoryPolicyTextBlock', window );">Inventory Valuation and Supplier Purchase Commitments</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Inventory Valuation and Supplier Purchase Commitments</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Inventory, which primarily consists of finished goods purchased from CMs or ODMs, is stated at the lower of cost (determined by the first-in, first-out method) or market value. Inbound shipping costs and U.S. tariffs are included in cost of inventory. In </span></div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">addition, from time to time, the Company procures component inventory primarily as a result of manufacturing discontinuation of critical components by suppliers. The Company regularly monitors inventory quantities on hand and records write-downs for excess and obsolete inventories based on the Company&#8217;s estimate of demand for its products, potential obsolescence of technology, product life cycles and whether pricing trends or forecasts indicate that the carrying value of inventory exceeds its estimated selling price. The Company also evaluates its supplier purchase commitments, which have increased significantly due to extended lead-times in the current supply chain environment, and records a liability for excess and obsolete components based on its estimated demand of our products, potential obsolescence of technology and product life cycles.</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">These factors are impacted by market and economic conditions, technology changes and new product introductions and require significant estimates that may include elements that are uncertain. Actual demand may differ from forecasted demand and may have a material effect on gross profit. If inventory is written down, a new cost basis is established that cannot be increased in future periods. Shipments from suppliers before the Company receives them are recorded as in-transit inventory when title and the significant risks and rewards of ownership have passed to the Company.</span><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock', window );">Property and Equipment</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Property and Equipment</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property and equipment are stated at cost, less accumulated depreciation, and are depreciated using the straight-line method over the estimated useful life of each asset. Generally, computer equipment is depreciated over two years; purchased software is depreciated over <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4MDI_2e01504e-91d5-45fd-890f-25b987875d7a">three</span> to five years; test equipment is depreciated over three years; furniture and fixtures are depreciated over seven years; and leasehold improvements are depreciated over the shorter of the respective lease term or the estimated useful life of the asset. Maintenance and repairs are charged to expense as incurred.</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy', window );">Goodwill</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Goodwill</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Goodwill was recorded as a result of the Company&#8217;s acquisitions of Occam Networks, Inc. in February 2011 and Optical Solutions, Inc. in February 2006. The Company records goodwill when consideration paid in a business acquisition exceeds the fair value of the net tangible assets and the identified intangible assets acquired. Goodwill is not amortized but instead is subject to an annual impairment test or more frequently if events or changes in circumstances indicate that it may be impaired. The Company evaluates goodwill on an annual basis as of the end of the second quarter of each fiscal year. Management has determined that it operates as a single reporting unit and, therefore, evaluates goodwill impairment at the enterprise level.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">At the end of the second quarter of 2022, the Company completed its annual goodwill impairment test. Based on its assessment of certain qualitative factors such as market capitalization, management concluded that the fair value of the Company was more likely than not greater than its carrying amount as of July 2, 2022. As such, it was not necessary to perform the two-step quantitative goodwill impairment test at the time.</span></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxPolicyTextBlock', window );">Income Taxes</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Income Taxes</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company evaluates its tax positions and estimates its current tax exposure along with assessing temporary differences that result from different book to tax treatment of items not currently deductible for tax purposes. These differences result in deferred tax assets and liabilities on the Company&#8217;s Consolidated Balance Sheets, which are estimated based upon the </span></div>difference between the financial statement and tax bases of assets and liabilities using the enacted tax rates that will be in effect when these differences reverse. In general, deferred tax assets represent future tax benefits to be received when certain expenses previously recognized in the Company&#8217;s Consolidated Statements of Comprehensive Income become deductible expenses under applicable income tax laws or loss or credit carryforwards are utilized. Accordingly, realization of the Company&#8217;s deferred tax assets is dependent on future taxable income against which these deductions, losses and credits can be utilized.The Company must assess the likelihood that deferred tax assets will be recovered from future taxable income, and if the Company determines that recovery is not more likely than not, the Company must establish a valuation allowance. Management judgment is required in determining its provision for income taxes, deferred tax assets and liabilities and any valuation allowance recorded against its net deferred tax assets. In the third quarter of 2021, the Company reversed the majority of its valuation allowance and recorded on its balance sheet U.S. federal and certain state deferred tax assets of $162.0&#160;million. As of December 31, 2022, the Company determined that positive evidence continues to outweigh negative evidence and concluded that it was more likely than not that its U.S. federal and state (with the exception of California) deferred tax assets are realizable.<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock', window );">Newly Adopted Accounting Standards and Recent Accounting Pronouncements Not Yet Adopted</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Newly Adopted Accounting Standards</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company did not adopt any new accounting standards in 2022 that were significant to the Company.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Recent Accounting Pronouncements Not Yet Adopted</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">There have been no accounting pronouncements or changes in accounting pronouncements that are significant or potentially significant to the Company.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for cash and cash equivalents, and for investments in debt and equity securities that have readily determinable fair values (marketable securities).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountingPoliciesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountingPoliciesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BasisOfAccountingPolicyPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for basis of accounting, or basis of presentation, used to prepare the financial statements (for example, US Generally Accepted Accounting Principles, Other Comprehensive Basis of Accounting, IFRS).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BasisOfAccountingPolicyPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingenciesPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for commitments and contingencies, which may include policies for recognizing and measuring loss and gain contingencies.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126907703&amp;loc=d3e12565-110249<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 954<br> -SubTopic 450<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6491354&amp;loc=d3e6049-115624<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommitmentsAndContingenciesPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskCreditRisk">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for credit risk.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)<br> -URI https://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e5967-108592<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 825<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=126941378&amp;loc=d3e61044-112788<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskCreditRisk</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CostOfSalesPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for cost of product sold and service rendered.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 705<br> -URI https://asc.fasb.org/topic&amp;trid=2122478<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CostOfSalesPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueOfFinancialInstrumentsPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for determining the fair value of financial instruments.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 60<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=7493716&amp;loc=d3e21868-110260<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=123594938&amp;loc=d3e13279-108611<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueOfFinancialInstrumentsPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for goodwill. This accounting policy also may address how an entity assesses and measures impairment of goodwill, how reporting units are determined, how goodwill is allocated to such units, and how the fair values of the reporting units are determined.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13854-109267<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -URI https://asc.fasb.org/subtopic&amp;trid=2144439<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 55<br> -Paragraph 24<br> -URI https://asc.fasb.org/extlink&amp;oid=122137925&amp;loc=d3e14258-109268<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for income taxes, which may include its accounting policies for recognizing and measuring deferred tax assets and liabilities and related valuation allowances, recognizing investment tax credits, operating loss carryforwards, tax credit carryforwards, and other carryforwards, methodologies for determining its effective income tax rate and the characterization of interest and penalties in the financial statements.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -URI https://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=d3e32247-109318<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 20<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32847-109319<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 19<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32840-109319<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=124431353&amp;loc=SL116659661-227067<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI https://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=d3e32280-109318<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 17<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32809-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of inventory accounting policy for inventory classes, including, but not limited to, basis for determining inventory amounts, methods by which amounts are added and removed from inventory classes, loss recognition on impairment of inventories, and situations in which inventories are stated above cost.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI https://asc.fasb.org/extlink&amp;oid=116847112&amp;loc=d3e4556-108314<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -URI https://asc.fasb.org/topic&amp;trid=2126998<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(b))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 912<br> -SubTopic 330<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6471895&amp;loc=d3e55923-109411<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=116847112&amp;loc=d3e4492-108314<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 270<br> -SubTopic 10<br> -Section 45<br> -Paragraph 6<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126900757&amp;loc=d3e543-108305<br><br>Reference 7: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (d)<br> -URI https://asc.fasb.org/extlink&amp;oid=126899994&amp;loc=d3e18823-107790<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6361739&amp;loc=d3e7789-107766<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 958<br> -SubTopic 360<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)<br> -URI https://asc.fasb.org/extlink&amp;oid=126982197&amp;loc=d3e99779-112916<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 958<br> -SubTopic 360<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=126982197&amp;loc=d3e99893-112916<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for determining the allowance for doubtful accounts for trade and other accounts receivable balances, and when impairments, charge-offs or recoveries are recognized.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI https://asc.fasb.org/extlink&amp;oid=123577603&amp;loc=d3e5144-111524<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for revenue from contract with customer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 17<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130561-203045<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 20<br> -Subparagraph (d)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130566-203045<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 18<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130563-203045<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -URI https://asc.fasb.org/topic&amp;trid=49130388<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 20<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130566-203045<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 18<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130563-203045<br><br>Reference 7: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (e)<br> -URI https://asc.fasb.org/extlink&amp;oid=126899994&amp;loc=d3e18823-107790<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 20<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130566-203045<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 19<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130564-203045<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 20<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130566-203045<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for award under share-based payment arrangement. Includes, but is not limited to, methodology and assumption used in measuring cost.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(ii)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(v)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -URI https://asc.fasb.org/topic&amp;trid=2228938<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.D.2.Q6)<br> -URI https://asc.fasb.org/extlink&amp;oid=122041274&amp;loc=d3e301413-122809<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(i)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StandardProductWarrantyPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for standard warranties including the methodology for measuring the liability.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126907703&amp;loc=d3e12565-110249<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StandardProductWarrantyPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UseOfEstimates">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for the use of estimates in the preparation of financial statements in conformity with generally accepted accounting principles.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6191-108592<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -URI https://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6161-108592<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI https://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6143-108592<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e5967-108592<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI https://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6061-108592<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI https://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6132-108592<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e5967-108592<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UseOfEstimates</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>32
<FILENAME>R20.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661388864">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Cash, Cash Equivalents and Marketable Securities (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAbstract', window );"><strong>Cash and Cash Equivalents [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfCashAndCashEquivalentsTableTextBlock', window );">Summary of Cash and Cash Equivalents</a></td>
<td class="text"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cash, cash equivalents and marketable securities consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-indent:22.5pt"><span><br/></span></div><div style="margin-top:5pt;text-indent:22.5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:95.467%"><tr><td style="width:1.0%"/><td style="width:73.172%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.484%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.079%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.484%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.081%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash and cash equivalents:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">39,189&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">26,442&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commercial paper</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">33,199&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">21,582&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,990&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Money market funds</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">555&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,320&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Corporate debt securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">140&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">989&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total cash and cash equivalents</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">79,073&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">51,333&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Marketable securities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">106,750&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">60,279&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commercial paper</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">28,992&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">80,812&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government agency securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,632&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,527&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Corporate debt securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,168&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,576&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Municipal securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,808&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total marketable securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">162,642&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">153,002&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">241,715&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">204,335&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock', window );">Debt Securities, Available-for-Sale</a></td>
<td class="text"><div style="margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The amortized cost and fair value of marketable securities as of December&#160;31, 2022 were as follows (in thousands):</span></div><div style="margin-top:7pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:45.245%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:2.139%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.835%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.554%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.835%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.554%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.838%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Amortized Cost</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Gross Unrealized Losses</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Fair Value</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">114,119&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,379)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">112,740&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commercial paper</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62,262&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(71)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62,191&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government agency securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,876&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(244)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,632&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Corporate debt securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,312&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(4)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,308&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Municipal securities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">101&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total marketable securities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">203,670&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,699)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">201,971&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -URI https://asc.fasb.org/topic&amp;trid=2196928<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfCashAndCashEquivalentsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the components of cash and cash equivalents.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfCashAndCashEquivalentsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>33
<FILENAME>R21.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661459680">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Fair Value Measurements (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueDisclosuresAbstract', window );"><strong>Fair Value Disclosures [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock', window );">Fair Value, Assets Measured on Recurring Basis</a></td>
<td class="text"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following tables sets forth the Company&#8217;s financial assets measured at fair value on a recurring basis based on the three-tier fair value hierarchy (in thousands): </span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:64.835%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.572%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.823%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.572%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.823%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.575%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">As of December 31, 2022</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Level 1</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Level 2</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Total</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Money market funds</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">555&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">555&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">112,740&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">112,740&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commercial paper</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62,191&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62,191&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government agency securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,632&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,632&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Corporate debt securities</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,308&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,308&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Municipal securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">113,295&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">89,231&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">202,526&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:5pt"><span><br/></span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:64.835%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.572%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.823%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.572%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.823%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.575%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">As of December 31, 2021</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Level 1</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Level 2</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Total</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Money market funds</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,320&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,320&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">60,279&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">60,279&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commercial paper</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">102,394&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">102,394&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">U.S. government agency securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,527&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,527&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Corporate debt securities</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,565&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,565&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Municipal securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,808&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,808&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62,599&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">115,294&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">177,893&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of assets, including [financial] instruments measured at fair value that are classified in stockholders' equity, if any, by class that are measured at fair value on a recurring basis. The disclosures contemplated herein include the fair value measurements at the reporting date by the level within the fair value hierarchy in which the fair value measurements in their entirety fall, segregating fair value measurements using quoted prices in active markets for identical assets (Level 1), significant other observable inputs (Level 2), and significant unobservable inputs (Level 3).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126976982&amp;loc=d3e19207-110258<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126976982&amp;loc=d3e19207-110258<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueDisclosuresAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueDisclosuresAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>34
<FILENAME>R22.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252657698624">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Balance Sheet Details (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BalanceSheetRelatedDisclosuresAbstract', window );"><strong>Balance Sheet Related Disclosures [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock', window );">Accounts Receivable, net</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Accounts receivable, net consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:98.538%"><tr><td style="width:1.0%"/><td style="width:73.380%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.432%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.027%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.432%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.029%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accounts receivable</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">94,201&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">85,944&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Allowance for doubtful accounts</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(397)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(725)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">93,804&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">85,219&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock', window );">Changes in Allowance for Doubtful Accounts and Product Reserve</a></td>
<td class="text"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The table below summarizes the changes in allowance for doubtful accounts and product return liability for the periods indicated (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.076%"><tr><td style="width:1.0%"/><td style="width:46.490%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.456%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.345%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.456%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.345%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.456%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.345%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.456%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.351%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Balance at Beginning of Year</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Additions Charged to Expenses or Revenue Net of Recoveries</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Write Offs and Returns</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Balance at <br/>End of Year</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Year Ended December 31, 2022:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Allowance for doubtful accounts</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">725&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(276)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(52)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">397&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Product return liability</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,836&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,622&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(4,497)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,961&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Year Ended December 31, 2021:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Allowance for doubtful accounts</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,405&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(201)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(479)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">725&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Product return liability</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,888&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,681&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(3,733)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,836&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Year Ended December 31, 2020:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Allowance for doubtful accounts</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">374&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,085&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(54)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,405&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Product return liability</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">919&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,391&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(2,422)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,888&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfInventoryCurrentTableTextBlock', window );">Inventory</a></td>
<td class="text"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Inventory consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"><tr><td style="width:1.0%"/><td style="width:73.035%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.454%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.178%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.454%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.179%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Raw materials</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">640&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">130&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Finished goods</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">148,520&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">88,750&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">149,160&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">88,880&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock', window );">Deferred Costs, Capitalized, Prepaid, and Other Assets Disclosure</a></td>
<td class="text"><div style="margin-top:7pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Prepaid expenses and other current assets consisted of the following (in thousands):</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"><tr><td style="width:1.0%"/><td style="width:73.750%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.446%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.828%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.446%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.830%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Supplier deposits</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">39,064&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,191&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Prepaid expenses and other current assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,627&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">24,620&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62,691&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">30,811&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentTextBlock', window );">Property and Equipment, net</a></td>
<td class="text"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property and equipment, net consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"><tr><td style="width:1.0%"/><td style="width:73.035%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.454%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.178%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.454%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.179%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Test equipment</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">44,106&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">39,476&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Computer equipment</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">13,396&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">11,156&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Software</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10,389&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9,013&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Leasehold improvements</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,730&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,351&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Furniture and fixtures</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,153&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,812&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">70,774&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62,808&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accumulated depreciation and amortization</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(44,940)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(41,025)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">25,834&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">21,783&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfOtherAssetsNoncurrentTextBlock', window );">Schedule of Other Assets, Noncurrent</a></td>
<td class="text"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Other long-term assets consisted of the following (in thousands):</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"><tr><td style="width:1.0%"/><td style="width:73.750%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.446%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.828%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.446%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.830%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Intangible asset</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,253&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,885&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other long-term assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">14,889&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,800&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">19,142&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">13,685&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock', window );">Accrued Liabilities</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_027d6b6d-617d-484f-9ecf-b96b9b28d960"><span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_50fa3eb5-1337-42a0-a46b-a7c0ec1f6782">Accrued liabilities</span></span> consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"><tr><td style="width:1.0%"/><td style="width:73.035%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.454%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.178%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.454%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.179%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Compensation and related benefits</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">27,813&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,165&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Component inventory held by suppliers</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10,280&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,611&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Professional and consulting fees</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,307&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,819&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current portion of revenue-share payments</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,210&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,731&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current portion of warranty and retrofit</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,377&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,076&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Customer advances or rebates</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,653&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,742&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Taxes payable</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,581&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,251&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Operating leases</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,949&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,596&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Freight</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,649&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,997&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Business events</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,167&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Product returns</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,961&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,836&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,527&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,773&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">90,474&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">71,597&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock', window );">Schedule of Product Warranty Liability</a></td>
<td class="text"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Changes in the Company&#8217;s accrued warranty and retrofit liability were as follows (in thousands):</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.076%"><tr><td style="width:1.0%"/><td style="width:60.044%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.456%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.195%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.456%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.195%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.456%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.198%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance at beginning of year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9,594&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9,208&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,294&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Provision for warranty and retrofit charged to cost of revenue</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,315&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,370&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,888&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Utilization of reserve</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(2,523)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(2,984)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(3,974)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance at end of year</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8,386&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9,594&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9,208&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Schedule Of Changes In Allowance For Doubtful Accounts And Product Return Liability</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetRelatedDisclosuresAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetRelatedDisclosuresAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the amounts paid in advance for capitalized costs that will be expensed with the passage of time or the occurrence of a triggering event, and will be charged against earnings within one year or the normal operating cycle, if longer; the aggregate carrying amount of current assets, not separately presented elsewhere in the balance sheet; and other deferred costs.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the various types of trade accounts and notes receivable and for each the gross carrying value, allowance, and net carrying value as of the balance sheet date. Presentation is categorized by current, noncurrent and unclassified receivables.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.3,4)<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the components of accrued liabilities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfInventoryCurrentTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the carrying amount as of the balance sheet date of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(c))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(b))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6361739&amp;loc=d3e7789-107766<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfInventoryCurrentTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfOtherAssetsNoncurrentTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of noncurrent assets.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(17))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfOtherAssetsNoncurrentTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the changes in the guarantor's aggregate product warranty liability, including the beginning balance of the aggregate product warranty liability, the aggregate reductions in that liability for payments made (in cash or in kind) under the warranty, the aggregate changes in the liability for accruals related to product warranties issued during the reporting period, the aggregate changes in the liability for accruals related to preexisting warranties (including adjustments related to changes in estimates), and the ending balance of the aggregate product warranty liability.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI https://asc.fasb.org/extlink&amp;oid=126907703&amp;loc=d3e12565-110249<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>35
<FILENAME>R23.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252659363792">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Commitments and Contingencies (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommitmentsAndContingenciesDisclosureAbstract', window );"><strong>Commitments and Contingencies Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock', window );">Lessee, Operating Lease, Liability, Maturity</a></td>
<td class="text">Future minimum payments under the non-cancelable operating leases consisted of the following as of December&#160;31, 2022 (in&#160;thousands):<table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"><tr><td style="width:1.0%"/><td style="width:75.546%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:6.834%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.320%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ending December 31,</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;Future Minimum Lease Payments</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2023</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,629&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2024</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,458&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2025</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,955&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2026 and thereafter</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">531&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total future minimum lease payments</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">13,573&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Less imputed interest</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,182)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 12.25pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">12,391&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table><span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_LesseeOperatingLeaseLiabilityTableTextBlock', window );">Lessee, Operating Leases</a></td>
<td class="text"><div style="margin-top:1pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2022, the operating lease liability consisted of the following (in thousands):</span></div><div style="margin-top:11pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:79.398%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:3.152%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.150%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzAtMC0xLTEtMzYxOTg_0eaed16b-5a85-4f40-8558-3b742d67e1cb">Accrued liabilities - current portion of operating leases</span></span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,949&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Operating leases</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8,442&#160;</span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">12,391&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock', window );">Lessor, Operating Lease, Payment to be Received, Fiscal Year Maturity</a></td>
<td class="text">Future minimum payments consisted of the following as of December&#160;31, 2022 (in&#160;thousands):<table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"><tr><td style="width:1.0%"/><td style="width:75.546%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:6.834%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.320%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ending December 31,</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;Future Minimum Sublease Payments</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2023</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">750&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2024</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">773&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2025</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">661&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total future minimum sublease payments</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,184&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_LesseeOperatingLeaseLiabilityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Lessee, Operating Lease Liability</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_LesseeOperatingLeaseLiabilityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingenciesDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommitmentsAndContingenciesDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of undiscounted cash flows of lessee's operating lease liability. Includes, but is not limited to, reconciliation of undiscounted cash flows to operating lease liability recognized in statement of financial position.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=128292326&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of maturity of undiscounted cash flows to be received by lessor on annual basis for operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 30<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=124258985&amp;loc=SL77919396-209981<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>36
<FILENAME>R24.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252659472240">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stockholders' Equity (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EquityAbstract', window );"><strong>Equity [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock', window );">Schedule of Stock Options Activity</a></td>
<td class="text"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the stock option activity under the Company&#8217;s equity incentive plans (in thousands, except per share data):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:90.058%"><tr><td style="width:1.0%"/><td style="width:42.406%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.585%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.237%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.585%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.237%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.585%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.237%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.585%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.243%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Weighted-</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Average</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Weighted-</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Remaining</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Average</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Contractual</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Aggregate</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Number of</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Exercise Price</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Life</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Intrinsic</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline">Stock Options</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Shares</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Per Share</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">(in years)</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;&#160;&#160;Value </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:5.2pt;font-weight:700;line-height:100%;position:relative;top:-2.8pt;vertical-align:baseline">(1)</span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Outstanding as of December 31, 2021</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,648&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">17.46&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,423&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">56.04&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Exercised</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(721)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9.28&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Canceled</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(63)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">35.74&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Outstanding as of December 31, 2022</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8,287&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">29.31&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7.5</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">325,828&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Vested and expected to vest as of&#160;December 31, 2022</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8,028&#160;</span></td><td style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">28.64&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7.4</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">321,015&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Options exercisable as of December 31, 2022</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,010&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">14.04&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6.1</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">218,143&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:underline">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="27" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:112%">(1) Amounts represent the difference between the exercise price and the fair market value of common stock at December 31, 2022 of $68.43 per share for all &#8220;in-the-money&#8221; options outstanding.</span></div></td></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock', window );">Disclosure of Share-based Compensation Arrangements by Share-based Payment Award</a></td>
<td class="text"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes stock-based compensation expense (in thousands):</span></div><div style="margin-top:10pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:50.215%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.408%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.519%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.408%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.519%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.408%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.523%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cost of revenue:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Products</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,666&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">790&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">575&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Services</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,034&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">668&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">450&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Sales and marketing</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">12,001&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,728&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,273&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Research and development</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">12,165&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,769&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,736&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">General and administrative</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">17,960&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9,275&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,926&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">44,826&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">24,230&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">13,960&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Income tax benefits recognized</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">11,501&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">16,929&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ScheduleOfGrantDateFairValuesTableTextBlock', window );">Schedule of Grant Date Fair Values</a></td>
<td class="text"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the weighted-average grant date fair values of the Company&#8217;s stock-based awards granted in the periods indicated:</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:86.111%"><tr><td style="width:1.0%"/><td style="width:55.096%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.667%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.633%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.667%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.633%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.667%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.637%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock options</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">31.86&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">26.55&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8.55&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">ESPP</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">18.51&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">12.93&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5.52&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">NQ ESPP</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">52.91&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">55.50&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">19.40&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock', window );">Valuation Assumptions, Stock Options</a></td>
<td class="text"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the weighted-average assumptions used in estimating the grant-date fair value of stock options and of each employee&#8217;s purchase right under the ESPP in the periods indicated:</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"/><td style="width:56.395%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.259%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline">Stock Options</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Expected volatility</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">58&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">56&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">53&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Expected life (years)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6.1</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6.0</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6.1</span></td></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Risk-free interest rate</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3.15&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1.11&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.48&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr></table></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock', window );">Valuation Assumptions, ESPP</a></td>
<td class="text"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"/><td style="width:56.395%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.259%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline">ESPP</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Expected volatility</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">62&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">63&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">70&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Expected life (years)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.5</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.5</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.4</span></td></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Risk-free interest rate</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2.16&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.05&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.12&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr></table><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock', window );">Schedule of Unrecognized Compensation Cost</a></td>
<td class="text"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2022, unrecognized stock-based compensation expense by award type, net of estimated forfeitures, and their expected weighted-average recognition periods are summarized in the following table (in thousands).</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:63.304%"><tr><td style="width:1.0%"/><td style="width:58.715%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:2.340%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:16.451%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td style="width:0.1%"/><td style="width:2.340%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:16.454%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Stock Option</span></td><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">ESPPs</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Unrecognized stock-based compensation expense</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">73,095&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">9,781&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Weighted-average amortization period (in years)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2.3</span></td><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.8</span></td></tr></table></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_SharesReservedForFutureIssuanceTableTextBlock', window );">Shares Reserved For Future Issuance</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Shares Reserved for Future Issuance </span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2022, the Company had common shares reserved for future issuance as follows (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:77.631%"><tr><td style="width:1.0%"/><td style="width:82.704%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.871%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.025%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock options outstanding</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8,287&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Shares available for future grant under 2019 Plan</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5,986&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Shares available for future issuance under ESPP</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,712&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Shares available for future issuance under NQ ESPP</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,043&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 12.25pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">22,028&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ScheduleOfGrantDateFairValuesTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Schedule of Grant Date Fair Values [Table Text Block]</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ScheduleOfGrantDateFairValuesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_SharesReservedForFutureIssuanceTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Represents the schedule to summarize the number of common shares reserved for future issuance. [Table Text Block]</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_SharesReservedForFutureIssuanceTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5047-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EquityAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EquityAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure for stock option plans. Includes, but is not limited to, outstanding awards at beginning and end of year, grants, exercises, forfeitures, and weighted-average grant date fair value.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the significant assumptions used during the year to estimate the fair value of employee stock purchase plans, including, but not limited to: (a) expected term, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the significant assumptions used during the year to estimate the fair value of stock options, including, but not limited to: (a) expected term of share options and similar instruments, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of cost not yet recognized and weighted-average period over which cost is expected to be recognized for nonvested award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>37
<FILENAME>R25.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661481472">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Accumulated Other Comprehensive Loss (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EquityAbstract', window );"><strong>Equity [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock', window );">Schedule of Accumulated Other Comprehensive Income (Loss)</a></td>
<td class="text"><div style="margin-top:6pt;text-indent:4.5pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The table below summarizes the changes in accumulated other comprehensive loss by component:</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:80.263%"><tr><td style="width:1.0%"/><td style="width:51.905%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.710%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.561%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.803%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.654%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.803%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.564%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized Gains and Losses on Available-for-Sale Marketable Securities</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Foreign Currency Translation Adjustments</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total</span></td></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(191)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(191)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other comprehensive income (loss)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(179)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">50&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(129)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(179)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(141)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(320)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other comprehensive loss</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,521)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(632)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(2,153)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance as of December 31, 2022</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,700)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(773)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(2,473)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EquityAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EquityAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the components of accumulated other comprehensive income (loss).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6450520&amp;loc=d3e32583-110901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669686-108580<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 30<br> -Section 45<br> -Paragraph 20<br> -URI https://asc.fasb.org/extlink&amp;oid=118261656&amp;loc=d3e32211-110900<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>38
<FILENAME>R26.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252657499008">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Income Taxes (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxDisclosureAbstract', window );"><strong>Income Tax Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock', window );">Schedule of Income before Income Tax, Domestic and Foreign</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The domestic and foreign components of income before incomes taxes were as follows (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"/><td style="width:56.395%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.259%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Domestic</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">51,442&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">70,776&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">33,777&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,600&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,878&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">507&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">54,042&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">72,654&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">34,284&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock', window );">Schedule of Components of Income Tax Expense (Benefit)</a></td>
<td class="text"><div style="margin-top:9pt;text-indent:9pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Income taxes consisted of the following (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"/><td style="width:56.395%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.259%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Federal</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,671&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">State</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,555&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,818&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">285&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">874&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">438&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">507&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current income tax</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">11,100&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,256&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">792&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Federal</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6,336&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(157,355)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">State</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(4,372)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(11,631)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(32)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred income tax</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,932&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(168,980)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">8&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 37pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">13,032&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(165,724)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">800&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock', window );">Schedule of Effective Income Tax Rate Reconciliation</a></td>
<td class="text"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The differences between the statutory and effective tax rates, expressed as a percentage of net income before income taxes, were as follows:</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"/><td style="width:56.395%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.259%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Federal statutory rate</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">21.0&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">21.0&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">21.0&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Impact of state taxes</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1.4&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(15.6)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.1&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign operations</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(0.2)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.6&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">R&amp;D tax credits</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(7.4)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1.4&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(4.8)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign income inclusion</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1.0&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock-based compensation</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(12.8)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(4.1)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other permanent items</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(0.2)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(0.3)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.6&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Tax true-up</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(0.2)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(0.4)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Valuation allowance</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(4.0)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(208.3)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(48.1)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net operating loss expiration / attribute expiration</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">5.5&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(13.1)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">37.4&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Base erosion anti-abuse tax</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">6.8&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">24.1&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(228.1)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2.3&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">%</span></td></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock', window );">Schedule of Deferred Tax Assets and Liabilities</a></td>
<td class="text"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The significant components of the Company&#8217;s deferred tax assets were as follows (in thousands):</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"><tr><td style="width:1.0%"/><td style="width:70.610%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.609%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.235%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.609%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.237%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred tax assets:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net operating loss carryforwards</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">44,189&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">82,672&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Tax credit carryforwards</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">56,717&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">52,538&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accruals and reserves</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">11,679&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10,302&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred revenue</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">13,156&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">11,351&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock-based compensation</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">7,417&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,921&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Capitalized R&amp;D</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">67,932&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">38,842&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Gross deferred tax assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">201,090&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">200,626&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Valuation allowance</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(29,914)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(29,236)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total deferred tax assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">171,176&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">171,390&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred tax liabilities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Fixed assets</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(2,648)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,511)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Intangible assets</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,497)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(917)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total deferred tax liabilities</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(4,145)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(2,428)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 25.75pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">167,031&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">168,962&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock', window );">Unrecognized Tax Benefits Activity</a></td>
<td class="text"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table reconciles the Company&#8217;s unrecognized tax benefits (in thousands):</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"><tr><td style="width:1.0%"/><td style="width:70.610%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.609%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.235%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.609%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.237%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance at beginning of year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">25,992&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">23,516&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;&#160;&#160;Reduction for tax positions related to prior year</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(905)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1,427)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;&#160;&#160;Additions for tax positions related to prior year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,232&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,947&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;&#160;&#160;&#160;Additions for tax positions related to current year</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,896&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,956&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance at end of year</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">29,215&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">25,992&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the components of income tax expense attributable to continuing operations for each year presented including, but not limited to: current tax expense (benefit), deferred tax expense (benefit), investment tax credits, government grants, the benefits of operating loss carryforwards, tax expense that results from allocating certain tax benefits either directly to contributed capital or to reduce goodwill or other noncurrent intangible assets of an acquired entity, adjustments of a deferred tax liability or asset for enacted changes in tax laws or rates or a change in the tax status of the entity, and adjustments of the beginning-of-the-year balances of a valuation allowance because of a change in circumstances that causes a change in judgment about the realizability of the related deferred tax asset in future years.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the components of net deferred tax asset or liability recognized in an entity's statement of financial position, including the following: the total of all deferred tax liabilities, the total of all deferred tax assets, the total valuation allowance recognized for deferred tax assets.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the reconciliation using percentage or dollar amounts of the reported amount of income tax expense attributable to continuing operations for the year to the amount of income tax expense that would result from applying domestic federal statutory tax rates to pretax income from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of income before income tax between domestic and foreign jurisdictions.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure for tax positions taken in the tax returns filed or to be filed for which it is more likely than not that the tax position will not be sustained upon examination by taxing authorities and other income tax contingencies. Includes, but is not limited to, interest and penalties, reconciliation of unrecognized tax benefits, unrecognized tax benefits that would affect the effective tax rate, tax years that remain subject to examination by tax jurisdictions, and information about positions for which it is reasonably possible that amounts unrecognized will significantly change within 12 months.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=SL6600010-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15<br> -Subparagraph (d)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32718-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 19<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32840-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SummaryOfIncomeTaxContingenciesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>39
<FILENAME>R27.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661386480">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Net Income Per Common Share (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EarningsPerShareAbstract', window );"><strong>Earnings Per Share [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock', window );">Schedule of Net Loss Per Share</a></td>
<td class="text"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table sets forth the computation of basic and diluted net income per common share for the periods indicated (in thousands, except per share data):</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"/><td style="width:56.395%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.259%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Numerator:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net income</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">41,010&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">238,378&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">33,484&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Denominator:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Weighted-average common shares &#8212; basic</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">65,058&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">63,277&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">59,074&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Effect of dilutive potential common shares</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,853&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">4,579&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,924&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Weighted-average common shares &#8212; diluted</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">68,911&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">67,856&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">61,998&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr style="height:9pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Basic net income per common share</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.63&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3.77&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.57&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Diluted net income per common share</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.60&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3.51&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">0.54&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Potentially dilutive shares excluded, weighted-average</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,758&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,006&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">753&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of an entity's basic and diluted earnings per share calculations, including a reconciliation of numerators and denominators of the basic and diluted per-share computations for income from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>40
<FILENAME>R28.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661445600">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Revenue from Contracts with Customers (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerAbstract', window );"><strong>Revenue from Contract with Customer [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock', window );">Revenue by Geographic Region</a></td>
<td class="text"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following is a summary of revenue disaggregated by geographic region based upon the location of the customers (in thousands):</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"><tr><td style="width:1.0%"/><td style="width:56.395%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.255%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.612%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.259%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Years Ended December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">United States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">786,802&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">565,964&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">473,779&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Americas excluding U.S.</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">41,892&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">45,719&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">27,802&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">26,916&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">45,879&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">22,925&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Middle East &amp; Africa</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">10,885&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">19,018&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">14,075&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Asia Pacific</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,332&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,814&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2,658&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 7.75pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">867,827&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">679,394&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">541,239&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock', window );">Property and Equipment by Geographic Region</a></td>
<td class="text"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s property and equipment, net of accumulated depreciation, are located in the following geographical areas (in thousands):</span></div><div style="margin-top:6pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"><tr><td style="width:1.0%"/><td style="width:70.610%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.609%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.235%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:1.609%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.237%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December 31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">United States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">21,785&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">19,900&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">China</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">3,220&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">1,840&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">India</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">829&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">43&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 7.75pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">25,834&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">21,783&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of revenue from external customers by geographic areas attributed to the entity's country of domicile and to foreign countries from which the entity derives revenue.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -Subparagraph a<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e9038-108599<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the names of foreign countries in which material long-lived assets other than financial instruments, long-term customer relationships of a financial institution, mortgage and other servicing rights, deferred policy acquisition costs, and deferred tax assets are located, and amount of such long-lived assets located in that country or foreign geographic area.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e9038-108599<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>41
<FILENAME>R29.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252657353696">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Description of Business and Significant Accounting Policies - Contract Costs (Details)<br></strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccountingPoliciesAbstract', window );"><strong>Accounting Policies [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CapitalizedContractCostAmortizationPeriod', window );">Capitalized contract cost, amortization period</a></td>
<td class="text">5 years<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountingPoliciesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountingPoliciesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CapitalizedContractCostAmortizationPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amortization period of cost capitalized in obtaining or fulfilling contract with customer, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 340<br> -SubTopic 40<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126905575&amp;loc=SL49131251-203054<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CapitalizedContractCostAmortizationPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>42
<FILENAME>R30.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252657563584">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Description of Business and Significant Accounting Policies - Useful Lives of Property and Equipment (Details)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2022</div></th></tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ComputerEquipmentMember', window );">Computer equipment</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Useful life of property and equipment</a></td>
<td class="text">2 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ComputerSoftwareIntangibleAssetMember', window );">Purchased Software | Minimum</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Useful life of property and equipment</a></td>
<td class="text">3 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ComputerSoftwareIntangibleAssetMember', window );">Purchased Software | Maximum</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Useful life of property and equipment</a></td>
<td class="text">5 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember', window );">Test Equipment</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Useful life of property and equipment</a></td>
<td class="text">3 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_FurnitureAndFixturesMember', window );">Furniture and Fixtures</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Useful life of property and equipment</a></td>
<td class="text">7 years<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentUsefulLife">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Useful life of long lived, physical assets used in the normal conduct of business and not intended for resale, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days. Examples include, but not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentUsefulLife</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ComputerEquipmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ComputerEquipmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ComputerSoftwareIntangibleAssetMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ComputerSoftwareIntangibleAssetMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_FurnitureAndFixturesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_FurnitureAndFixturesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>43
<FILENAME>R31.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252658951536">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Description of Business and Significant Accounting Policies - Additional Information (Detail) - USD ($)<br></strong></div></th>
<th class="th" colspan="1">3 Months Ended</th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Oct. 02, 2021</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ScheduleOfCertainTermsLineItemsLineItems', window );"><strong>Schedule of Certain Terms [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ProductWarrantyPeriod', window );">Product warranty period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">3 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_GoodwillImpairmentLoss', window );">Goodwill, impairment loss</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance', window );">Change in deferred tax assets valuation allowance, amount</a></td>
<td class="nump">$ 162,000,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsValuationAllowance', window );">Valuation allowance</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">29,914,000<span></span>
</td>
<td class="nump">$ 29,236,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_ConsolidatedEntitiesAxis=srt_SubsidiariesMember', window );">Subsidiaries | Brazil, China And United Kingdom</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ScheduleOfCertainTermsLineItemsLineItems', window );"><strong>Schedule of Certain Terms [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Cash', window );">Cash</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 2,700,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ScheduleOfCertainTermsLineItemsLineItems', window );"><strong>Schedule of Certain Terms [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ProductWarrantyPeriod', window );">Product warranty period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">1 year<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ScheduleOfCertainTermsLineItemsLineItems', window );"><strong>Schedule of Certain Terms [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ProductWarrantyPeriod', window );">Product warranty period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">5 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ProductWarrantyPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Represents the general warranty period for the Company's hardware products from the date of shipment.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ProductWarrantyPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ScheduleOfCertainTermsLineItemsLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Schedule of Certain Terms [Line Items]</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ScheduleOfCertainTermsLineItemsLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Cash">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Excludes cash and cash equivalents within disposal group and discontinued operation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 946<br> -SubTopic 210<br> -Section 45<br> -Paragraph 20<br> -URI https://asc.fasb.org/extlink&amp;oid=118262064&amp;loc=SL116631418-115840<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 946<br> -SubTopic 210<br> -Section 45<br> -Paragraph 21<br> -URI https://asc.fasb.org/extlink&amp;oid=118262064&amp;loc=SL116631419-115840<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Cash</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsValuationAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax assets for which it is more likely than not that a tax benefit will not be realized.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillImpairmentLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of loss from the write-down of an asset representing the future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13854-109267<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=99380562&amp;loc=d3e13777-109266<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 55<br> -Paragraph 24<br> -URI https://asc.fasb.org/extlink&amp;oid=122137925&amp;loc=d3e14258-109268<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (e)<br> -URI https://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13816-109267<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillImpairmentLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to increase (decrease) in the valuation allowance for deferred tax assets.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ConsolidatedEntitiesAxis=srt_SubsidiariesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ConsolidatedEntitiesAxis=srt_SubsidiariesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=calx_BrazilChinaAndUnitedKingdomMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=calx_BrazilChinaAndUnitedKingdomMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>44
<FILENAME>R32.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252655365680">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Cash, Cash Equivalents and Marketable Securities (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsLineItems', window );"><strong>Cash and Cash Equivalents [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAtCarryingValue', window );">Cash and cash equivalents</a></td>
<td class="nump">$ 79,073<span></span>
</td>
<td class="nump">$ 51,333<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">162,642<span></span>
</td>
<td class="nump">153,002<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_CashCashEquivalentsAndMarketableSecurities', window );">Total cash, cash equivalents, and marketable securities</a></td>
<td class="nump">$ 241,715<span></span>
</td>
<td class="nump">204,335<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsLineItems', window );"><strong>Cash and Cash Equivalents [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleTerm', window );">Marketable securities, term</a></td>
<td class="text">2 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentDebtSecuritiesMember', window );">U.S. government securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsLineItems', window );"><strong>Cash and Cash Equivalents [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">$ 106,750<span></span>
</td>
<td class="nump">60,279<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperMember', window );">Commercial paper</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsLineItems', window );"><strong>Cash and Cash Equivalents [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">28,992<span></span>
</td>
<td class="nump">80,812<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember', window );">U.S. government agency securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsLineItems', window );"><strong>Cash and Cash Equivalents [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">23,632<span></span>
</td>
<td class="nump">5,527<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember', window );">Corporate debt securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsLineItems', window );"><strong>Cash and Cash Equivalents [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">3,168<span></span>
</td>
<td class="nump">3,576<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalNotesMember', window );">Municipal securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsLineItems', window );"><strong>Cash and Cash Equivalents [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">100<span></span>
</td>
<td class="nump">2,808<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_CashMember', window );">Cash</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsLineItems', window );"><strong>Cash and Cash Equivalents [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Cash', window );">Cash</a></td>
<td class="nump">39,189<span></span>
</td>
<td class="nump">26,442<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_CommercialPaperMember', window );">Commercial paper</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsLineItems', window );"><strong>Cash and Cash Equivalents [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashEquivalentsAtCarryingValue', window );">Cash equivalents</a></td>
<td class="nump">33,199<span></span>
</td>
<td class="nump">21,582<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_USGovernmentDebtSecuritiesMember', window );">U.S. government securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsLineItems', window );"><strong>Cash and Cash Equivalents [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashEquivalentsAtCarryingValue', window );">Cash equivalents</a></td>
<td class="nump">5,990<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_MoneyMarketFundsMember', window );">Money market funds</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsLineItems', window );"><strong>Cash and Cash Equivalents [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashEquivalentsAtCarryingValue', window );">Cash equivalents</a></td>
<td class="nump">555<span></span>
</td>
<td class="nump">2,320<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_CorporateDebtSecuritiesMember', window );">Corporate debt securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsLineItems', window );"><strong>Cash and Cash Equivalents [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashEquivalentsAtCarryingValue', window );">Cash equivalents</a></td>
<td class="nump">$ 140<span></span>
</td>
<td class="nump">$ 989<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_CashCashEquivalentsAndMarketableSecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Cash, Cash Equivalents, And Marketable Securities</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_CashCashEquivalentsAndMarketableSecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Cash">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Excludes cash and cash equivalents within disposal group and discontinued operation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 946<br> -SubTopic 210<br> -Section 45<br> -Paragraph 20<br> -URI https://asc.fasb.org/extlink&amp;oid=118262064&amp;loc=SL116631418-115840<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 946<br> -SubTopic 210<br> -Section 45<br> -Paragraph 21<br> -URI https://asc.fasb.org/extlink&amp;oid=118262064&amp;loc=SL116631419-115840<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Cash</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAtCarryingValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3044-108585<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAtCarryingValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashEquivalentsAtCarryingValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashEquivalentsAtCarryingValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount excluding accrued interest, of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleTerm">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Period between issuance and maturity of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (bbb)(2)<br> -URI https://asc.fasb.org/extlink&amp;oid=126976982&amp;loc=d3e19207-110258<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleTerm</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalNotesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalNotesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_CashMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAxis=us-gaap_CashMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_CommercialPaperMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAxis=us-gaap_CommercialPaperMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_USGovernmentDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAxis=us-gaap_USGovernmentDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_MoneyMarketFundsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAxis=us-gaap_MoneyMarketFundsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_CorporateDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAxis=us-gaap_CorporateDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>45
<FILENAME>R33.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252659734736">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Cash, Cash Equivalents, and Marketable Securities - Schedule of Marketable Securities (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">$ 162,642<span></span>
</td>
<td class="nump">$ 153,002<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BalanceSheetLocationAxis=calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember', window );">Short-Term Marketable Securities And Cash Equivalents</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent', window );">Amortized Cost</a></td>
<td class="nump">203,670<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(1,699)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">201,971<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentDebtSecuritiesMember', window );">U.S. government securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">106,750<span></span>
</td>
<td class="nump">60,279<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentDebtSecuritiesMember', window );">U.S. government securities | Short-Term Marketable Securities And Cash Equivalents</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent', window );">Amortized Cost</a></td>
<td class="nump">114,119<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(1,379)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">112,740<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperMember', window );">Commercial paper</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">28,992<span></span>
</td>
<td class="nump">80,812<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperMember', window );">Commercial paper | Short-Term Marketable Securities And Cash Equivalents</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent', window );">Amortized Cost</a></td>
<td class="nump">62,262<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(71)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">62,191<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember', window );">U.S. government agency securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">23,632<span></span>
</td>
<td class="nump">5,527<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember', window );">U.S. government agency securities | Short-Term Marketable Securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent', window );">Amortized Cost</a></td>
<td class="nump">23,876<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(244)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">23,632<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember', window );">Corporate debt securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">3,168<span></span>
</td>
<td class="nump">3,576<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember', window );">Corporate debt securities | Short-Term Marketable Securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent', window );">Amortized Cost</a></td>
<td class="nump">3,312<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(4)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">3,308<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalNotesMember', window );">Municipal securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">100<span></span>
</td>
<td class="nump">$ 2,808<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalNotesMember', window );">Municipal securities | Short-Term Marketable Securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent', window );">Amortized Cost</a></td>
<td class="nump">101<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(1)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">$ 100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, before tax, of unrealized loss in accumulated other comprehensive income (AOCI) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=126970911&amp;loc=d3e27161-111563<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amortized cost excluding accrued interest, after allowance for credit loss, of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount excluding accrued interest, of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetLocationAxis=calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetLocationAxis=calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetLocationAxis=calx_ShortTermMarketableSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetLocationAxis=calx_ShortTermMarketableSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalNotesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalNotesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>46
<FILENAME>R34.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252656503296">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Fair Value Measurements (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">$ 162,642<span></span>
</td>
<td class="nump">$ 153,002<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentDebtSecuritiesMember', window );">U.S. government securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">106,750<span></span>
</td>
<td class="nump">60,279<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperMember', window );">Commercial paper</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">28,992<span></span>
</td>
<td class="nump">80,812<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember', window );">U.S. government agency securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">23,632<span></span>
</td>
<td class="nump">5,527<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember', window );">Corporate debt securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">3,168<span></span>
</td>
<td class="nump">3,576<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalNotesMember', window );">Municipal securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">100<span></span>
</td>
<td class="nump">2,808<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_MoneyMarketFundsMember', window );">Money market funds</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashEquivalentsAtCarryingValue', window );">Cash equivalents</a></td>
<td class="nump">555<span></span>
</td>
<td class="nump">2,320<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AssetsFairValueDisclosure', window );">Total assets</a></td>
<td class="nump">202,526<span></span>
</td>
<td class="nump">177,893<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | Level 1</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AssetsFairValueDisclosure', window );">Total assets</a></td>
<td class="nump">113,295<span></span>
</td>
<td class="nump">62,599<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | Level 2</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AssetsFairValueDisclosure', window );">Total assets</a></td>
<td class="nump">89,231<span></span>
</td>
<td class="nump">115,294<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | U.S. government securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">112,740<span></span>
</td>
<td class="nump">60,279<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | U.S. government securities | Level 1</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">112,740<span></span>
</td>
<td class="nump">60,279<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | U.S. government securities | Level 2</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | Commercial paper</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">62,191<span></span>
</td>
<td class="nump">102,394<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | Commercial paper | Level 1</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | Commercial paper | Level 2</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">62,191<span></span>
</td>
<td class="nump">102,394<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | U.S. government agency securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">23,632<span></span>
</td>
<td class="nump">5,527<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | U.S. government agency securities | Level 1</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | U.S. government agency securities | Level 2</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">23,632<span></span>
</td>
<td class="nump">5,527<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | Corporate debt securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">3,308<span></span>
</td>
<td class="nump">4,565<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | Corporate debt securities | Level 1</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | Corporate debt securities | Level 2</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">3,308<span></span>
</td>
<td class="nump">4,565<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | Municipal securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">100<span></span>
</td>
<td class="nump">2,808<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | Municipal securities | Level 1</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | Municipal securities | Level 2</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent', window );">Marketable securities</a></td>
<td class="nump">100<span></span>
</td>
<td class="nump">2,808<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | Money market funds</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashEquivalentsAtCarryingValue', window );">Cash equivalents</a></td>
<td class="nump">555<span></span>
</td>
<td class="nump">2,320<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | Money market funds | Level 1</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashEquivalentsAtCarryingValue', window );">Cash equivalents</a></td>
<td class="nump">555<span></span>
</td>
<td class="nump">2,320<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring | Money market funds | Level 2</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashEquivalentsAtCarryingValue', window );">Cash equivalents</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsFairValueDisclosure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Fair value portion of probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126976982&amp;loc=d3e19207-110258<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AssetsFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashEquivalentsAtCarryingValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashEquivalentsAtCarryingValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount excluding accrued interest, of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalNotesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalNotesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_MoneyMarketFundsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAxis=us-gaap_MoneyMarketFundsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel1Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel1Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel2Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel2Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>47
<FILENAME>R35.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252662619136">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Balance Sheet Details - Accounts Receivable (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccountsReceivableNetCurrentAbstract', window );"><strong>Summary of accounts receivable, net</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccountsReceivableGrossCurrent', window );">Accounts receivable</a></td>
<td class="nump">$ 94,201<span></span>
</td>
<td class="nump">$ 85,944<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent', window );">Allowance for doubtful accounts</a></td>
<td class="num">(397)<span></span>
</td>
<td class="num">(725)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccountsReceivableNetCurrent', window );">Accounts receivable, net</a></td>
<td class="nump">$ 93,804<span></span>
</td>
<td class="nump">$ 85,219<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsReceivableGrossCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, before allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=124259787&amp;loc=d3e4428-111522<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 45<br> -Paragraph 9<br> -URI https://asc.fasb.org/extlink&amp;oid=124259787&amp;loc=d3e4531-111522<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(3)(a)(1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountsReceivableGrossCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsReceivableNetCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=124259787&amp;loc=d3e4428-111522<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 45<br> -Paragraph 9<br> -URI https://asc.fasb.org/extlink&amp;oid=124259787&amp;loc=d3e4531-111522<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountsReceivableNetCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsReceivableNetCurrentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountsReceivableNetCurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of allowance for credit loss on accounts receivable, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI https://asc.fasb.org/extlink&amp;oid=123577603&amp;loc=d3e5074-111524<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=124255206&amp;loc=SL82895884-210446<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(4))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>48
<FILENAME>R36.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252662232160">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Balance Sheet Details - Allowance and Product Return Reserve (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_AllowanceForCreditLossMember', window );">Allowance for doubtful accounts</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_MovementInValuationAllowancesAndReservesRollForward', window );"><strong>SEC Schedule, 12-09, Movement in Valuation Allowances and Reserves [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance at Beginning of Year</a></td>
<td class="nump">$ 725<span></span>
</td>
<td class="nump">$ 1,405<span></span>
</td>
<td class="nump">$ 374<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense', window );">Additions Charged to Expenses or Revenue Net of Recoveries</a></td>
<td class="num">(276)<span></span>
</td>
<td class="num">(201)<span></span>
</td>
<td class="nump">1,085<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesDeductions', window );">Write Offs and Returns</a></td>
<td class="num">(52)<span></span>
</td>
<td class="num">(479)<span></span>
</td>
<td class="num">(54)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance at End of Year</a></td>
<td class="nump">397<span></span>
</td>
<td class="nump">725<span></span>
</td>
<td class="nump">1,405<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesTypeAxis=calx_SECSchedule1209ReserveProductReturnsMember', window );">Product return liability</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_MovementInValuationAllowancesAndReservesRollForward', window );"><strong>SEC Schedule, 12-09, Movement in Valuation Allowances and Reserves [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance at Beginning of Year</a></td>
<td class="nump">1,836<span></span>
</td>
<td class="nump">1,888<span></span>
</td>
<td class="nump">919<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense', window );">Additions Charged to Expenses or Revenue Net of Recoveries</a></td>
<td class="nump">5,622<span></span>
</td>
<td class="nump">3,681<span></span>
</td>
<td class="nump">3,391<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesDeductions', window );">Write Offs and Returns</a></td>
<td class="num">(4,497)<span></span>
</td>
<td class="num">(3,733)<span></span>
</td>
<td class="num">(2,422)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance at End of Year</a></td>
<td class="nump">$ 2,961<span></span>
</td>
<td class="nump">$ 1,836<span></span>
</td>
<td class="nump">$ 1,888<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_MovementInValuationAllowancesAndReservesRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_MovementInValuationAllowancesAndReservesRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesBalance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of valuation and qualifying accounts and reserves.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09(Column B))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e24092-122690<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09(Column E))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e24092-122690<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesBalance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in valuation and qualifying accounts and reserves from charge to cost and expense.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09(Column C)(1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e24092-122690<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesDeductions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of decrease in valuation and qualifying accounts and reserves.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09(Column D))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e24092-122690<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesDeductions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_AllowanceForCreditLossMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_AllowanceForCreditLossMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesTypeAxis=calx_SECSchedule1209ReserveProductReturnsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesTypeAxis=calx_SECSchedule1209ReserveProductReturnsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>49
<FILENAME>R37.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252662173616">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Balance Sheet Details - Inventory (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InventoryNetAbstract', window );"><strong>Summary of inventory, net</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InventoryRawMaterialsNetOfReserves', window );">Raw materials</a></td>
<td class="nump">$ 640<span></span>
</td>
<td class="nump">$ 130<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InventoryFinishedGoodsNetOfReserves', window );">Finished goods</a></td>
<td class="nump">148,520<span></span>
</td>
<td class="nump">88,750<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InventoryNet', window );">Total inventory</a></td>
<td class="nump">$ 149,160<span></span>
</td>
<td class="nump">$ 88,880<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryFinishedGoodsNetOfReserves">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying amount, net of valuation reserves and adjustments, as of the balance sheet date of merchandise or goods held by the company that are readily available for sale.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.BB)<br> -URI https://asc.fasb.org/extlink&amp;oid=27011343&amp;loc=d3e100047-122729<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a)(1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryFinishedGoodsNetOfReserves</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryNetAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryNetAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryRawMaterialsNetOfReserves">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying amount, net of valuation reserves and adjustments, as of the balance sheet date of unprocessed items to be consumed in the manufacturing or production process.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.BB)<br> -URI https://asc.fasb.org/extlink&amp;oid=27011343&amp;loc=d3e100047-122729<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a)(4))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryRawMaterialsNetOfReserves</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>50
<FILENAME>R38.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252662584816">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Balance Sheet Details - Schedule of Prepaid and Other Current Assets (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TextBlockAbstract', window );"><strong>Text Block [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DepositsAssetsCurrent', window );">Supplier deposits</a></td>
<td class="nump">$ 39,064<span></span>
</td>
<td class="nump">$ 6,191<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent', window );">Prepaid expenses and other current assets</a></td>
<td class="nump">23,627<span></span>
</td>
<td class="nump">24,620<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PrepaidExpenseAndOtherAssetsCurrent', window );">Prepaid expenses and other current assets</a></td>
<td class="nump">$ 62,691<span></span>
</td>
<td class="nump">$ 30,811<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Prepaid Expenses And Other Assets, Miscellaneous, Current</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DepositsAssetsCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying value of amounts transferred to third parties for security purposes that are expected to be returned or applied towards payment within one year or during the operating cycle, if shorter.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(8))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DepositsAssetsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PrepaidExpenseAndOtherAssetsCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(9))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PrepaidExpenseAndOtherAssetsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>51
<FILENAME>R39.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252656723856">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Balance Sheet Details - Property and Equipment, net (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Property and equipment, gross</a></td>
<td class="nump">$ 70,774<span></span>
</td>
<td class="nump">$ 62,808<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment', window );">Accumulated depreciation and amortization</a></td>
<td class="num">(44,940)<span></span>
</td>
<td class="num">(41,025)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Property and equipment, net</a></td>
<td class="nump">25,834<span></span>
</td>
<td class="nump">21,783<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Depreciation', window );">Depreciation and amortization</a></td>
<td class="nump">14,315<span></span>
</td>
<td class="nump">15,012<span></span>
</td>
<td class="nump">$ 13,718<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember', window );">Test equipment</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Property and equipment, gross</a></td>
<td class="nump">44,106<span></span>
</td>
<td class="nump">39,476<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ComputerEquipmentMember', window );">Computer equipment</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Property and equipment, gross</a></td>
<td class="nump">13,396<span></span>
</td>
<td class="nump">11,156<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=calx_SoftwareMember', window );">Software</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Property and equipment, gross</a></td>
<td class="nump">10,389<span></span>
</td>
<td class="nump">9,013<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LeaseholdImprovementsMember', window );">Leasehold improvements</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Property and equipment, gross</a></td>
<td class="nump">1,730<span></span>
</td>
<td class="nump">1,351<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_FurnitureAndFixturesMember', window );">Furniture and fixtures</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Property and equipment, gross</a></td>
<td class="nump">$ 1,153<span></span>
</td>
<td class="nump">$ 1,812<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of accumulated depreciation, depletion and amortization for physical assets used in the normal conduct of business to produce goods and services.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(14))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Depreciation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of expense recognized in the current period that reflects the allocation of the cost of tangible assets over the assets' useful lives. Includes production and non-production related depreciation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Depreciation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount before accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(13))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -URI https://asc.fasb.org/extlink&amp;oid=126734703&amp;loc=d3e572229-122910<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 360<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=124429447&amp;loc=SL124453093-239630<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ComputerEquipmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ComputerEquipmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=calx_SoftwareMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=calx_SoftwareMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LeaseholdImprovementsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LeaseholdImprovementsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_FurnitureAndFixturesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_FurnitureAndFixturesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>52
<FILENAME>R40.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252659289056">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Balance Sheet Details - Intangible Asset Acquisition (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IntangibleAssetsNetExcludingGoodwill', window );">Intangible asset</a></td>
<td class="nump">$ 4,253<span></span>
</td>
<td class="nump">$ 6,885<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherAssetsMiscellaneousNoncurrent', window );">Other long-term assets</a></td>
<td class="nump">14,889<span></span>
</td>
<td class="nump">6,800<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherAssetsNoncurrent', window );">Other assets</a></td>
<td class="nump">19,142<span></span>
</td>
<td class="nump">13,685<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccruedLiabilitiesCurrent', window );">Accrued liabilities</a></td>
<td class="nump">90,474<span></span>
</td>
<td class="nump">71,597<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherLiabilitiesNoncurrent', window );">Other long-term liabilities</a></td>
<td class="nump">6,332<span></span>
</td>
<td class="nump">11,076<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_ComputerSoftwareIntangibleAssetMember', window );">Licensed Software</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RoyaltyGuaranteesCommitmentsAmount', window );">Royalty payment commitment amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 15,800<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherLiabilities', window );">Other liabilities</a></td>
<td class="nump">11,400<span></span>
</td>
<td class="nump">13,200<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccruedLiabilitiesCurrent', window );">Accrued liabilities</a></td>
<td class="nump">7,200<span></span>
</td>
<td class="nump">4,700<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherLiabilitiesNoncurrent', window );">Other long-term liabilities</a></td>
<td class="nump">$ 4,200<span></span>
</td>
<td class="nump">$ 8,500<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedLiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of obligations incurred and payable, pertaining to costs that are statutory in nature, are incurred on contractual obligations, or accumulate over time and for which invoices have not yet been received or will not be rendered. Examples include taxes, interest, rent and utilities. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedLiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IntangibleAssetsNetExcludingGoodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Sum of the carrying amounts of all intangible assets, excluding goodwill, as of the balance sheet date, net of accumulated amortization and impairment charges.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph ((a)(1),(b))<br> -URI https://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6388964&amp;loc=d3e16212-109274<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IntangibleAssetsNetExcludingGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherAssetsMiscellaneousNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of other miscellaneous assets expected to be realized or consumed after one year or normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherAssetsMiscellaneousNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherAssetsNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of noncurrent assets classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(17))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherAssetsNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03.15)<br> -URI https://asc.fasb.org/extlink&amp;oid=126897435&amp;loc=d3e534808-122878<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherLiabilitiesNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.24)<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherLiabilitiesNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RoyaltyGuaranteesCommitmentsAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount the entity has committed to make for future royalty guarantees.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 928<br> -SubTopic 440<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6473578&amp;loc=d3e63223-108013<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RoyaltyGuaranteesCommitmentsAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_ComputerSoftwareIntangibleAssetMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_ComputerSoftwareIntangibleAssetMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>53
<FILENAME>R41.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252656759632">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Balance Sheet Details - Accrued Liabilities (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BalanceSheetRelatedDisclosuresAbstract', window );"><strong>Balance Sheet Related Disclosures [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList', window );">Operating lease, liability, current, statement of financial position</a></td>
<td class="text">Total accrued liabilities<span></span>
</td>
<td class="text">Total accrued liabilities<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccruedLiabilitiesCurrentAbstract', window );"><strong>Summary of accrued liabilities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EmployeeRelatedLiabilitiesCurrent', window );">Compensation and related benefits</a></td>
<td class="nump">$ 27,813<span></span>
</td>
<td class="nump">$ 23,165<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer', window );">Component inventory held by suppliers</a></td>
<td class="nump">10,280<span></span>
</td>
<td class="nump">7,611<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccruedProfessionalFeesCurrent', window );">Professional and consulting fees</a></td>
<td class="nump">7,307<span></span>
</td>
<td class="nump">4,819<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_AccruedRevenueSharePaymentsCurrent', window );">Current portion of revenue-share payments</a></td>
<td class="nump">7,210<span></span>
</td>
<td class="nump">4,731<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProductWarrantyAccrualClassifiedCurrent', window );">Current portion of warranty and retrofit</a></td>
<td class="nump">6,377<span></span>
</td>
<td class="nump">7,076<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_AccruedCustomerRebates', window );">Customer advances or rebates</a></td>
<td class="nump">5,653<span></span>
</td>
<td class="nump">4,742<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes', window );">Taxes payable</a></td>
<td class="nump">4,581<span></span>
</td>
<td class="nump">4,251<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityCurrent', window );">Operating leases</a></td>
<td class="nump">3,949<span></span>
</td>
<td class="nump">3,596<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_AccruedFreight', window );">Freight</a></td>
<td class="nump">3,649<span></span>
</td>
<td class="nump">3,997<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_AccruedBusinessEventsCurrent', window );">Business events</a></td>
<td class="nump">3,167<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ProductReturnReserveCurrent', window );">Product returns</a></td>
<td class="nump">2,961<span></span>
</td>
<td class="nump">1,836<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherAccruedLiabilitiesCurrent', window );">Other</a></td>
<td class="nump">7,527<span></span>
</td>
<td class="nump">5,773<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccruedLiabilitiesCurrent', window );">Total accrued liabilities</a></td>
<td class="nump">$ 90,474<span></span>
</td>
<td class="nump">$ 71,597<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_AccruedBusinessEventsCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Accrued Business Events, Current</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_AccruedBusinessEventsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_AccruedCustomerRebates">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Accrued customer rebates.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_AccruedCustomerRebates</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Accrued excess and obsolete inventory at contract manufacturer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_AccruedFreight">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Accrued Freight</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_AccruedFreight</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_AccruedRevenueSharePaymentsCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Accrued Revenue Share Payments, Current</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_AccruedRevenueSharePaymentsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ProductReturnReserveCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Product Return Reserve, Current</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ProductReturnReserveCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Taxes Payable, Current, Excluding Accrued Income Taxes</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedLiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of obligations incurred and payable, pertaining to costs that are statutory in nature, are incurred on contractual obligations, or accumulate over time and for which invoices have not yet been received or will not be rendered. Examples include taxes, interest, rent and utilities. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedLiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedLiabilitiesCurrentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedLiabilitiesCurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedProfessionalFeesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of obligations incurred through that date and payable for professional fees, such as for legal and accounting services received. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedProfessionalFeesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetRelatedDisclosuresAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetRelatedDisclosuresAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeRelatedLiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Total of the carrying values as of the balance sheet date of obligations incurred through that date and payable for obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeRelatedLiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicates line item in statement of financial position that includes current operating lease liability.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918631-209977<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>enum2:enumerationSetItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherAccruedLiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of expenses incurred but not yet paid classified as other, due within one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherAccruedLiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProductWarrantyAccrualClassifiedCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of obligations incurred through that date and payable for estimated claims under standard and extended warranty protection rights granted to customers. For classified balance sheets, represents the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -URI https://asc.fasb.org/extlink&amp;oid=126907703&amp;loc=d3e12524-110249<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 25<br> -Paragraph 5<br> -URI https://asc.fasb.org/extlink&amp;oid=126907644&amp;loc=d3e11281-110244<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProductWarrantyAccrualClassifiedCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>54
<FILENAME>R42.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252658950000">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Balance Sheet Details - Product Warranty Activity (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward', window );"><strong>Product warranty activities [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProductWarrantyAccrual', window );">Balance at beginning of year</a></td>
<td class="nump">$ 9,594<span></span>
</td>
<td class="nump">$ 9,208<span></span>
</td>
<td class="nump">$ 7,294<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProductWarrantyAccrualWarrantiesIssued', window );">Provision for warranty and retrofit charged to cost of revenue</a></td>
<td class="nump">1,315<span></span>
</td>
<td class="nump">3,370<span></span>
</td>
<td class="nump">5,888<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProductWarrantyAccrualPayments', window );">Utilization of reserve</a></td>
<td class="num">(2,523)<span></span>
</td>
<td class="num">(2,984)<span></span>
</td>
<td class="num">(3,974)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProductWarrantyAccrual', window );">Balance at end of year</a></td>
<td class="nump">$ 8,386<span></span>
</td>
<td class="nump">$ 9,594<span></span>
</td>
<td class="nump">$ 9,208<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProductWarrantyAccrual">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of obligations incurred through that date and payable for estimated claims under standard and extended warranty protection rights granted to customers.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03.15(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126897435&amp;loc=d3e534808-122878<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (c)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=126907703&amp;loc=d3e12565-110249<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (c)(5)<br> -URI https://asc.fasb.org/extlink&amp;oid=126907703&amp;loc=d3e12565-110249<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProductWarrantyAccrual</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProductWarrantyAccrualPayments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of decrease in the standard and extended product warranty accrual from payments made in cash or in kind to satisfy claims under the terms of the standard and extended product warranty.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph ((c)(2))<br> -URI https://asc.fasb.org/extlink&amp;oid=126907703&amp;loc=d3e12565-110249<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProductWarrantyAccrualPayments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProductWarrantyAccrualWarrantiesIssued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in the standard and extended product warranty accrual from warranties issued.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph ((c)(3))<br> -URI https://asc.fasb.org/extlink&amp;oid=126907703&amp;loc=d3e12565-110249<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProductWarrantyAccrualWarrantiesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>55
<FILENAME>R43.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252659292704">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Balance Sheet Details - Restructuring (Details) - USD ($)<br></strong></div></th>
<th class="th" colspan="1">3 Months Ended</th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RestructuringCostAndReserveLineItems', window );"><strong>Restructuring Cost and Reserve [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges (benefit)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">$ (786,000)<span></span>
</td>
<td class="nump">$ 6,286,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RestructuringReserve', window );">Restructuring reserve</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_StatementGeographicalAxis=calx_SanJoseCaliforniaMember', window );">San Jose, California</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RestructuringCostAndReserveLineItems', window );"><strong>Restructuring Cost and Reserve [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges (benefit)</a></td>
<td class="num">$ (800,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RestructuringPlanAxis=calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember', window );">All Platform Future And Work-From-Anywhere Culture Alignment</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RestructuringCostAndReserveLineItems', window );"><strong>Restructuring Cost and Reserve [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges (benefit)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 6,300,000<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringCharges">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of expenses associated with exit or disposal activities pursuant to an authorized plan. Excludes expenses related to a discontinued operation or an asset retirement obligation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 45<br> -Paragraph 3<br> -URI https://asc.fasb.org/extlink&amp;oid=109237686&amp;loc=d3e17752-110868<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 5.P.3)<br> -URI https://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140864-122747<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.P.4(b)(1))<br> -URI https://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140904-122747<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringCharges</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringCostAndReserveLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringCostAndReserveLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringReserve">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying amount (including both current and noncurrent portions of the accrual) as of the balance sheet date pertaining to a specified type of cost associated with exit from or disposal of business activities or restructuring pursuant to a duly authorized plan.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI https://asc.fasb.org/extlink&amp;oid=6394359&amp;loc=d3e17939-110869<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB TOPIC 5.P.4(b)(2))<br> -URI https://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140904-122747<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringReserve</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=calx_SanJoseCaliforniaMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=calx_SanJoseCaliforniaMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringPlanAxis=calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringPlanAxis=calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>56
<FILENAME>R44.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252657363072">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Commitments and Contingencies - Operating Lease (Details)<br> $ in Thousands</strong></div></th>
<th class="th">
<div>Dec. 31, 2022 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommitmentsAndContingenciesDisclosureAbstract', window );"><strong>Commitments and Contingencies Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths', window );">2023</a></td>
<td class="nump">$ 4,629<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo', window );">2024</a></td>
<td class="nump">4,458<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree', window );">2025</a></td>
<td class="nump">3,955<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour', window );">2026 and thereafter</a></td>
<td class="nump">531<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue', window );">Total future minimum lease payments</a></td>
<td class="nump">13,573<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount', window );">Less imputed interest</a></td>
<td class="num">(1,182)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiability', window );">Operating lease, liability</a></td>
<td class="nump">$ 12,391<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingenciesDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommitmentsAndContingenciesDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=128292326&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=128292326&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=128292326&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=128292326&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=128292326&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=128292326&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>57
<FILENAME>R45.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252673300384">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Commitments and Contingencies - Sublease (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Nov. 30, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommitmentsAndContingenciesDisclosureAbstract', window );"><strong>Commitments and Contingencies Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LessorOperatingLeaseTermOfContract', window );">Sublease, term of contract</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">39 months<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths', window );">2023</a></td>
<td class="nump">$ 750<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears', window );">2024</a></td>
<td class="nump">773<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears', window );">2025</a></td>
<td class="nump">661<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LessorOperatingLeasePaymentsToBeReceived', window );">Total future minimum sublease payments</a></td>
<td class="nump">$ 2,184<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingenciesDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommitmentsAndContingenciesDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LessorOperatingLeasePaymentsToBeReceived">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lease payments to be received by lessor for operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 30<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=124258985&amp;loc=SL77919396-209981<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LessorOperatingLeasePaymentsToBeReceived</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lease payment to be received by lessor for operating lease in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 30<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=124258985&amp;loc=SL77919396-209981<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lease payment to be received by lessor for operating lease in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 30<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=124258985&amp;loc=SL77919396-209981<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lease payment to be received by lessor for operating lease in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 30<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=124258985&amp;loc=SL77919396-209981<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LessorOperatingLeaseTermOfContract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Term of lessor's operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 30<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)(3)<br> -URI https://asc.fasb.org/extlink&amp;oid=124258985&amp;loc=SL77919359-209981<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LessorOperatingLeaseTermOfContract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>58
<FILENAME>R46.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252659439040">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Commitments and Contingencies - Operating Lease Liability (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommitmentsAndContingenciesDisclosureAbstract', window );"><strong>Commitments and Contingencies Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList', window );">Operating lease, liability, current, statement of financial position</a></td>
<td class="text">Accrued Liabilities, Current<span></span>
</td>
<td class="text">Accrued Liabilities, Current<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityCurrent', window );">Accrued liabilities - current portion of operating leases</a></td>
<td class="nump">$ 3,949<span></span>
</td>
<td class="nump">$ 3,596<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityNoncurrent', window );">Operating leases</a></td>
<td class="nump">8,442<span></span>
</td>
<td class="nump">$ 12,376<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiability', window );">Operating lease liability</a></td>
<td class="nump">$ 12,391<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingenciesDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommitmentsAndContingenciesDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicates line item in statement of financial position that includes current operating lease liability.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918631-209977<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>enum2:enumerationSetItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>59
<FILENAME>R47.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252658903120">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Commitments and Contingencies - Textual (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LossContingenciesLineItems', window );"><strong>Loss Contingencies [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue', window );">Total future minimum lease payments</a></td>
<td class="nump">$ 13,573<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent', window );">Operating lease, weighted average discount rate, percent</a></td>
<td class="nump">6.10%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1', window );">Operating lease, weighted average remaining lease term</a></td>
<td class="text">3 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseCost', window );">Rent expense</a></td>
<td class="nump">$ 4,600<span></span>
</td>
<td class="nump">$ 4,100<span></span>
</td>
<td class="nump">$ 4,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeasePayments', window );">Operating lease, payments</a></td>
<td class="nump">4,500<span></span>
</td>
<td class="nump">3,900<span></span>
</td>
<td class="nump">$ 3,800<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted', window );">Purchase commitments</a></td>
<td class="nump">340,600<span></span>
</td>
<td class="nump">247,300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer', window );">Accrued professional and consulting fees</a></td>
<td class="nump">10,280<span></span>
</td>
<td class="nump">$ 7,611<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SubleaseIncome', window );">Sublease Income</a></td>
<td class="nump">300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_StatementGeographicalAxis=calx_SanJoseCaliforniaMember', window );">San Jose, California</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LossContingenciesLineItems', window );"><strong>Loss Contingencies [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue', window );">Total future minimum lease payments</a></td>
<td class="nump">$ 7,300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Accrued excess and obsolete inventory at contract manufacturer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=128292326&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LossContingenciesLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LossContingenciesLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseCost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of single lease cost, calculated by allocation of remaining cost of lease over remaining lease term. Includes, but is not limited to, single lease cost, after impairment of right-of-use asset, calculated by amortization of remaining right-of-use asset and accretion of lease liability.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI https://asc.fasb.org/extlink&amp;oid=123414884&amp;loc=SL77918982-209971<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=128292326&amp;loc=SL77918686-209980<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeasePayments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow from operating lease, excluding payments to bring another asset to condition and location necessary for its intended use.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 5<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918643-209977<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=128292326&amp;loc=SL77918686-209980<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeasePayments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average discount rate for operating lease calculated at point in time.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(4)<br> -URI https://asc.fasb.org/extlink&amp;oid=128292326&amp;loc=SL77918686-209980<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI https://asc.fasb.org/extlink&amp;oid=123414884&amp;loc=SL77918982-209971<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average remaining lease term for operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI https://asc.fasb.org/extlink&amp;oid=123414884&amp;loc=SL77918982-209971<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(3)<br> -URI https://asc.fasb.org/extlink&amp;oid=128292326&amp;loc=SL77918686-209980<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Minimum amount to be expended to satisfy the terms of arrangements in which the entity has agreed to expend funds to procure goods or services, excluding long-term purchase commitments or unconditional purchase obligations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(17))<br> -URI https://asc.fasb.org/extlink&amp;oid=126897435&amp;loc=d3e534808-122878<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(19))<br> -URI https://asc.fasb.org/extlink&amp;oid=126734703&amp;loc=d3e572229-122910<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(25))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SubleaseIncome">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of sublease income excluding finance and operating lease expense.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (e)<br> -URI https://asc.fasb.org/extlink&amp;oid=128292326&amp;loc=SL77918686-209980<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI https://asc.fasb.org/extlink&amp;oid=123414884&amp;loc=SL77918982-209971<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SubleaseIncome</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=calx_SanJoseCaliforniaMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=calx_SanJoseCaliforniaMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>60
<FILENAME>R48.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252655293104">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stockholders' Equity - Stock Offering, Treasury Stock Retirement, Preferred Stock and Common Stock (Details) - USD ($)<br> $ / shares in Units, $ in Millions</strong></div></th>
<th class="th" colspan="1">1 Months Ended</th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Aug. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PreferredStockSharesAuthorized', window );">Preferred stock, shares authorized (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,000,000<span></span>
</td>
<td class="nump">5,000,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PreferredStockSharesIssued', window );">Preferred stock, shares issued (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PreferredStockSharesOutstanding', window );">Preferred stock, shares outstanding (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockDividendsPerShareDeclared', window );">Dividends declared or paid (in dollars per share)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockParOrStatedValuePerShare', window );">Common stock, par value (in dollars per share)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.025<span></span>
</td>
<td class="nump">$ 0.025<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SubsidiarySaleOfStockAxis=calx_PublicStockOfferingMember', window );">Public Stock Offering</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction', window );">Shares sold in offering (in shares)</a></td>
<td class="nump">3,220,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockParOrStatedValuePerShare', window );">Common stock, par value (in dollars per share)</a></td>
<td class="nump">$ 20.00<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SubsidiarySaleOfStockAxis=us-gaap_OverAllotmentOptionMember', window );">Over-Allotment Option</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction', window );">Shares sold in offering (in shares)</a></td>
<td class="nump">420,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SaleOfStockConsiderationReceivedOnTransaction', window );">Aggregate net proceeds from stock offering</a></td>
<td class="nump">$ 60.1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockDividendsPerShareDeclared">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Aggregate dividends declared during the period for each share of common stock outstanding.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI https://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockDividendsPerShareDeclared</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockParOrStatedValuePerShare">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Face amount or stated value per share of common stock.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockParOrStatedValuePerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesAuthorized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The maximum number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) permitted to be issued by an entity's charter and bylaws.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesIssued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Total number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) issued to shareholders (includes related preferred shares that were issued, repurchased, and remain in the treasury). May be all or portion of the number of preferred shares authorized. Excludes preferred shares that are classified as debt.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126973232&amp;loc=SL123496158-112644<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockSharesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Aggregate share number for all nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer) held by stockholders. Does not include preferred shares that have been repurchased.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SaleOfStockConsiderationReceivedOnTransaction">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Cash received on stock transaction after deduction of issuance costs.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SaleOfStockConsiderationReceivedOnTransaction</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The number of shares issued or sold by the subsidiary or equity method investee per stock transaction.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SubsidiarySaleOfStockAxis=calx_PublicStockOfferingMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SubsidiarySaleOfStockAxis=calx_PublicStockOfferingMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SubsidiarySaleOfStockAxis=us-gaap_OverAllotmentOptionMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SubsidiarySaleOfStockAxis=us-gaap_OverAllotmentOptionMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>61
<FILENAME>R49.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661142064">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stockholders' Equity - Stock Repurchase Program (Details)<br> $ in Millions</strong></div></th>
<th class="th" colspan="1">1 Months Ended</th>
</tr>
<tr><th class="th">
<div>Jul. 31, 2022 </div>
<div>USD ($)</div>
</th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EquityAbstract', window );"><strong>Equity [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockRepurchaseProgramPeriodInForce1', window );">Stock repurchase program, period authorized</a></td>
<td class="text">1 year<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockRepurchaseProgramAuthorizedAmount1', window );">Stock repurchase program, authorized amount</a></td>
<td class="nump">$ 100.0<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EquityAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EquityAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockRepurchaseProgramAuthorizedAmount1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of stock repurchase plan authorized.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockRepurchaseProgramAuthorizedAmount1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockRepurchaseProgramPeriodInForce1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Period which shares may be purchased under a stock repurchase plan authorized by an entity's Board of Directors, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockRepurchaseProgramPeriodInForce1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>62
<FILENAME>R50.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252656046800">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stockholders' Equity - Equity Incentive Plans (Details) - USD ($)<br> $ / shares in Units, $ in Thousands</strong></div></th>
<th class="th" colspan="3">1 Months Ended</th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Feb. 28, 2023</div></th>
<th class="th"><div>Feb. 28, 2022</div></th>
<th class="th"><div>Feb. 28, 2021</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross', window );">Stock options granted (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2,423,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Weighted-average grant date fair value per share, stock options (in dollars per share)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 31.86<span></span>
</td>
<td class="nump">$ 26.55<span></span>
</td>
<td class="nump">$ 8.55<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensation', window );">Stock-based compensation</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 44,826<span></span>
</td>
<td class="nump">$ 24,230<span></span>
</td>
<td class="nump">$ 13,960<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PlanNameAxis=calx_A2019EquityIncentiveAwardPlanMember', window );">2019 Equity Incentive Award Plan</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares', window );">Shares available for issuance, additional shares (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,500,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant', window );">Shares available for future grant</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">6,000,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_MinimumExercisePriceOfStockOptionPercent', window );">Minimum exercise price of stock option, percentage</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">100.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ContractualTermStockOptions', window );">Contractual term, stock options</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">10 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PlanNameAxis=calx_A2019EquityIncentiveAwardPlanMember', window );">2019 Equity Incentive Award Plan | Stock Options | Period One</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage', window );">Award vesting rights, percentage</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">25.00%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PlanNameAxis=calx_A2019EquityIncentiveAwardPlanMember', window );">2019 Equity Incentive Award Plan | Stock Options | Period Two</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Vesting period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">3 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PlanNameAxis=calx_A2021PerformanceTargetsMember', window );">2021 Performance Targets | Performance Based Stock Options | Executive Officer</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross', window );">Stock options granted (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">700,000<span></span>
</td>
<td class="nump">700,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Weighted-average grant date fair value per share, stock options (in dollars per share)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 55.96<span></span>
</td>
<td class="nump">$ 36.74<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1', window );">Award requisite service period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">1 year<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent', window );">Target achievement performance threshold, percent</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">80.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent', window );">Bookings target achievement performance threshold, percent</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">90.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet', window );">Number of shares granted if target achievement performance threshold not met (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent', window );">Shares award weighting percent for target achievement performance threshold, percent</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">50.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent', window );">Shares award target achievement performance threshold, percent</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">100.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition', window );">Awards percentage of total subject to service condition</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">97.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_PerformanceTargetsServicesConditionPeriod', window );">Performance targets services condition period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">4 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensation', window );">Stock-based compensation</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 10,100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PlanNameAxis=calx_A2021PerformanceTargetsMember', window );">2021 Performance Targets | Performance Based Stock Options | Executive Officer | Subsequent Event</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition', window );">Awards percentage of total subject to service condition</a></td>
<td class="nump">100.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_PerformanceTargetsServicesConditionPeriod', window );">Performance targets services condition period</a></td>
<td class="text">4 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PlanNameAxis=calx_A2021PerformanceTargetsMember', window );">2021 Performance Targets | Performance Based Stock Options | Period One | Executive Officer</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage', window );">Award vesting rights, percentage</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">25.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PlanNameAxis=calx_A2021PerformanceTargetsMember', window );">2021 Performance Targets | Performance Based Stock Options | Period One | Executive Officer | Subsequent Event</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage', window );">Award vesting rights, percentage</a></td>
<td class="nump">25.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PlanNameAxis=calx_A2021PerformanceTargetsMember', window );">2021 Performance Targets | Performance Based Stock Options | Period Two | Executive Officer</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage', window );">Award vesting rights, percentage</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">75.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Vesting period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">36 months<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensation', window );">Stock-based compensation</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 3,600<span></span>
</td>
<td class="nump">$ 6,300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PlanNameAxis=calx_A2021PerformanceTargetsMember', window );">2021 Performance Targets | Performance Based Stock Options | Period Two | Executive Officer | Subsequent Event</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage', window );">Award vesting rights, percentage</a></td>
<td class="nump">75.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Vesting period</a></td>
<td class="text">36 months<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ContractualTermStockOptions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Contractual Term, Stock Options</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ContractualTermStockOptions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_MinimumExercisePriceOfStockOptionPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Minimum exercise price of stock options expressed as a percentage of the fair market value of the Company&#8217;s common stock at grant date.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_MinimumExercisePriceOfStockOptionPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_PerformanceTargetsServicesConditionPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Performance Targets Services Condition Period</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_PerformanceTargetsServicesConditionPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Share-Based Compensation Arrangement By Share-Based Payment Award, Awards Percentage Of Total Subject To Service Condition</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Share-Based Compensation Arrangement By Share-Based Payment Award, Bookings, Target Achievement Performance Threshold, Percent</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Share-Based Compensation Arrangement By Share-Based Payment Award, Net Income Per Share, Target Achievement Performance Threshold, Percent</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Share Based Compensation Arrangement By Share Based Payment Award Number Of Shares Available For Grant, Additional Shares</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Share-Based Compensation Arrangement By Share-Based Payment Award, Number Of Shares Granted If Target Achievement Performance Threshold Not Met</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Share-Based Compensation Arrangement By Share-Based Payment Award, Shares Award Target Achievement Performance Threshold, Percent</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Share-Based Compensation Arrangement By Share-Based Payment Award, Shares Award Weighting Percent For Target Achievement Performance Threshold, Percent</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of noncash expense for share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Estimated period over which an employee is required to provide service in exchange for the equity-based payment award, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Period over which grantee's right to exercise award under share-based payment arrangement is no longer contingent on satisfaction of service or performance condition, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, combination of market, performance or service condition.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The difference between the maximum number of shares (or other type of equity) authorized for issuance under the plan (including the effects of amendments and adjustments), and the sum of: 1) the number of shares (or other type of equity) already issued upon exercise of options or other equity-based awards under the plan; and 2) shares (or other type of equity) reserved for issuance on granting of outstanding awards, net of cancellations and forfeitures, if applicable.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Gross number of share options (or share units) granted during the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(01)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The weighted average grant-date fair value of options granted during the reporting period as calculated by applying the disclosed option pricing methodology.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of vesting of award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PlanNameAxis=calx_A2019EquityIncentiveAwardPlanMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PlanNameAxis=calx_A2019EquityIncentiveAwardPlanMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_VestingAxis=us-gaap_ShareBasedCompensationAwardTrancheOneMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_VestingAxis=us-gaap_ShareBasedCompensationAwardTrancheOneMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_VestingAxis=us-gaap_ShareBasedCompensationAwardTrancheTwoMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_VestingAxis=us-gaap_ShareBasedCompensationAwardTrancheTwoMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PlanNameAxis=calx_A2021PerformanceTargetsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PlanNameAxis=calx_A2021PerformanceTargetsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=calx_PerformanceBasedStockOptionsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=calx_PerformanceBasedStockOptionsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_TitleOfIndividualAxis=srt_ExecutiveOfficerMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_TitleOfIndividualAxis=srt_ExecutiveOfficerMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SubsequentEventTypeAxis=us-gaap_SubsequentEventMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SubsequentEventTypeAxis=us-gaap_SubsequentEventMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>63
<FILENAME>R51.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252656832256">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stockholders' Equity - Stock Options Activity (Details) - USD ($)<br> $ / shares in Units, shares in Thousands, $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward', window );"><strong>Stock Options, Number of Shares:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Stock options outstanding, beginning (in shares)</a></td>
<td class="nump">6,648<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross', window );">Stock options granted (in shares)</a></td>
<td class="nump">2,423<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised', window );">Stock options exercised (in shares)</a></td>
<td class="num">(721)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod', window );">Stock options forfeited (in shares)</a></td>
<td class="num">(63)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Stock options outstanding, ending (in shares)</a></td>
<td class="nump">8,287<span></span>
</td>
<td class="nump">6,648<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward', window );"><strong>Stock Options, Weighted-Average Exercise Price Per Share:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Stock options outstanding, beginning (in dollars per share)</a></td>
<td class="nump">$ 17.46<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice', window );">Stock options granted (in dollars per share)</a></td>
<td class="nump">56.04<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice', window );">Stock options exercised (in dollars per share)</a></td>
<td class="nump">9.28<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice', window );">Stock options forfeited (in dollars per share)</a></td>
<td class="nump">35.74<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Stock options outstanding, ending (in dollars per share)</a></td>
<td class="nump">$ 29.31<span></span>
</td>
<td class="nump">$ 17.46<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract', window );"><strong>Stock Options, Additional Disclosures</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2', window );">Weighted-average remaining contractual term, stock options outstanding</a></td>
<td class="text">7 years 6 months<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue', window );">Aggregate intrinsic value, stock options outstanding</a></td>
<td class="nump">$ 325,828<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber', window );">Stock options vested and expected to vest (in shares)</a></td>
<td class="nump">8,028<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice', window );">Stock options vested and expected to vest (in dollars per share)</a></td>
<td class="nump">$ 28.64<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1', window );">Weighted-average remaining contractual term, stock options vested and expected to vest</a></td>
<td class="text">7 years 4 months 24 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue', window );">Aggregate intrinsic value, stock options vested and expected to vest</a></td>
<td class="nump">$ 321,015<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber', window );">Stock options exercisable (in shares)</a></td>
<td class="nump">4,010<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice', window );">Stock options exercisable (in dollars per share)</a></td>
<td class="nump">$ 14.04<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1', window );">Weighted-average remaining contractual term, stock options exercisable</a></td>
<td class="text">6 years 1 month 6 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1', window );">Aggregate intrinsic value, stock options exercisable</a></td>
<td class="nump">$ 218,143<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare', window );">Stock options, intrinsic value per share (in dollars per share)</a></td>
<td class="nump">$ 68.43<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue', window );">Total intrinsic value for exercised stock options</a></td>
<td class="nump">$ 31,000<span></span>
</td>
<td class="nump">$ 59,600<span></span>
</td>
<td class="nump">$ 6,700<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Issuance of common stock under equity incentive plans, net of forfeitures</a></td>
<td class="nump">$ 6,700<span></span>
</td>
<td class="nump">$ 11,200<span></span>
</td>
<td class="nump">$ 900<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Intrinsic Value, Amount Per Share</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The number of shares into which fully or partially vested stock options outstanding as of the balance sheet date can be currently converted under the option plan.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iii)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The weighted-average price as of the balance sheet date at which grantees can acquire the shares reserved for issuance on vested portions of options outstanding and currently exercisable under the stock option plan.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iii)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of accumulated difference between fair value of underlying shares on dates of exercise and exercise price on options exercised (or share units converted) into shares.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)(2)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The number of shares under options that were cancelled during the reporting period as a result of occurrence of a terminating event specified in contractual agreements pertaining to the stock option plan.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(03)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Gross number of share options (or share units) granted during the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(01)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount by which the current fair value of the underlying stock exceeds the exercise price of options outstanding.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of options outstanding, including both vested and non-vested options.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(ii)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(i)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average price at which grantees can acquire the shares reserved for issuance under the stock option plan.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(ii)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(i)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount by which current fair value of underlying stock exceeds exercise price of fully vested and expected to vest options outstanding. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of fully vested and expected to vest options outstanding that can be converted into shares under option plan. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted-average exercise price, at which grantee can acquire shares reserved for issuance, for fully vested and expected to vest options outstanding. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average price at which option holders acquired shares when converting their stock options into shares.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(02)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average price at which grantees could have acquired the underlying shares with respect to stock options that were terminated.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(03)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average per share amount at which grantees can acquire shares of common stock by exercise of options.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(01)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of difference between fair value of the underlying shares reserved for issuance and exercise price of vested portions of options outstanding and currently exercisable.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average remaining contractual term for vested portions of options outstanding and currently exercisable or convertible, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average remaining contractual term for option awards outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average remaining contractual term for fully vested and expected to vest options outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of share options (or share units) exercised during the current period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(02)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI https://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126973232&amp;loc=d3e21463-112644<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Value of stock issued as a result of the exercise of stock options.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126973232&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI https://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.29-31)<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>64
<FILENAME>R52.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252654427376">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stockholders' Equity - Fair Value of Awards Granted (Details) - $ / shares<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Weighted-average grant date fair value per share, stock options (in dollars per share)</a></td>
<td class="nump">$ 31.86<span></span>
</td>
<td class="nump">$ 26.55<span></span>
</td>
<td class="nump">$ 8.55<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember', window );">ESPP</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Weighted-average grant date fair value per share</a></td>
<td class="nump">18.51<span></span>
</td>
<td class="nump">12.93<span></span>
</td>
<td class="nump">5.52<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PlanNameAxis=calx_A2017NonqualifiedEmployeeStockPurchasePlanMember', window );">2017 Nonqualified Employee Stock Purchase Plan | ESPP</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Weighted-average grant date fair value per share</a></td>
<td class="nump">$ 52.91<span></span>
</td>
<td class="nump">$ 55.50<span></span>
</td>
<td class="nump">$ 19.40<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(01)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The weighted average grant-date fair value of options granted during the reporting period as calculated by applying the disclosed option pricing methodology.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PlanNameAxis=calx_A2017NonqualifiedEmployeeStockPurchasePlanMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PlanNameAxis=calx_A2017NonqualifiedEmployeeStockPurchasePlanMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>65
<FILENAME>R53.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252657570928">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stockholders' Equity - Stock-Based Compensation Expense (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Stock based compensation</a></td>
<td class="nump">$ 44,826<span></span>
</td>
<td class="nump">$ 24,230<span></span>
</td>
<td class="nump">$ 13,960<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense', window );">Share-Based Payment Arrangement, Expense, Tax Benefit</a></td>
<td class="nump">$ 11,501<span></span>
</td>
<td class="nump">16,929<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_PercentOfHistoricalVolatility', window );">Percent of historical volatility</a></td>
<td class="nump">50.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_PercentOfImpliedVolatility', window );">Percent of implied volatility</a></td>
<td class="nump">50.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeStatementLocationAxis=calx_CostOfRevenueProductsMember', window );">Products</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Stock based compensation</a></td>
<td class="nump">$ 1,666<span></span>
</td>
<td class="nump">790<span></span>
</td>
<td class="nump">575<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeStatementLocationAxis=calx_CostOfRevenueServicesMember', window );">Services</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Stock based compensation</a></td>
<td class="nump">1,034<span></span>
</td>
<td class="nump">668<span></span>
</td>
<td class="nump">450<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeStatementLocationAxis=us-gaap_SellingAndMarketingExpenseMember', window );">Sales and marketing</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Stock based compensation</a></td>
<td class="nump">12,001<span></span>
</td>
<td class="nump">6,728<span></span>
</td>
<td class="nump">4,273<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeStatementLocationAxis=us-gaap_ResearchAndDevelopmentExpenseMember', window );">Research and development</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Stock based compensation</a></td>
<td class="nump">12,165<span></span>
</td>
<td class="nump">6,769<span></span>
</td>
<td class="nump">4,736<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeStatementLocationAxis=us-gaap_GeneralAndAdministrativeExpenseMember', window );">General and administrative</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Stock based compensation</a></td>
<td class="nump">$ 17,960<span></span>
</td>
<td class="nump">$ 9,275<span></span>
</td>
<td class="nump">$ 3,926<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_PercentOfHistoricalVolatility">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percent of Historical Volatility</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_PercentOfHistoricalVolatility</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_PercentOfImpliedVolatility">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percent of Implied Volatility</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_PercentOfImpliedVolatility</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllocatedShareBasedCompensationExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of expense for award under share-based payment arrangement. Excludes amount capitalized.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)(i)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AllocatedShareBasedCompensationExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of tax benefit for recognition of expense of award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)(i)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=calx_CostOfRevenueProductsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=calx_CostOfRevenueProductsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=calx_CostOfRevenueServicesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=calx_CostOfRevenueServicesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=us-gaap_SellingAndMarketingExpenseMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=us-gaap_SellingAndMarketingExpenseMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=us-gaap_ResearchAndDevelopmentExpenseMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=us-gaap_ResearchAndDevelopmentExpenseMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=us-gaap_GeneralAndAdministrativeExpenseMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=us-gaap_GeneralAndAdministrativeExpenseMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>66
<FILENAME>R54.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252656008080">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stockholders' Equity - ESPP (Details) - ESPP<br> $ in Millions</strong></div></th>
<th class="th" colspan="2">1 Months Ended</th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th">
<div>May 31, 2020 </div>
<div>shares</div>
</th>
<th class="th">
<div>May 31, 2019 </div>
<div>shares</div>
</th>
<th class="th">
<div>Dec. 31, 2022 </div>
<div>USD ($) </div>
<div>period </div>
<div>shares</div>
</th>
<th class="th">
<div>Apr. 30, 2019 </div>
<div>shares</div>
</th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Weighted-average amortization period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">9 months 18 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember', window );">2017 Nonqualified Employee Stock Purchase Plan</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized', window );">Number of additional shares authorized (in shares)</a></td>
<td class="nump">800,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized', window );">Number of shares authorized (in shares)</a></td>
<td class="nump">6,300,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant', window );">Shares available for future grant</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3,000,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Weighted-average amortization period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">9 months 18 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent', window );">Maximum contribution percent</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">25.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture', window );">Employee termination period following purchase date to receive shares subject to risk of forfeiture</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">1 year<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod', window );">Number of shares authorized per purchase period</a></td>
<td class="nump">300,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares', window );">Shares available for issuance, additional shares (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">800,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod', window );">Shares issued in period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">600,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward', window );">Shares purchased for award</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">600,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions', window );">Unrecognized stock-based compensation expense | $</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 9.3<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember', window );">Employee Stock Purchase Plan</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate', window );">Maximum employee subscription rate</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">15.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee', window );">Maximum number of shares employee can purchase during offering period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods', window );">Number of offering periods | period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod', window );">Offering period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">6 months<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent', window );">Price of common stock purchased under the ESPP</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">85.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized', window );">Number of additional shares authorized (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,300,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized', window );">Number of shares authorized (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">12,400,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">11,100,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant', window );">Shares available for future grant</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4,700,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan', window );">Shares purchased under ESPP (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">200,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions', window );">Unrecognized stock-based compensation expense | $</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.4<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Weighted-average amortization period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">1 month 6 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Share-Based Compensation Arrangement By Share-Based Payment Award, Employee Termination Period Following Purchase Date To Receive Shares Subject To Risk Of Forfeiture</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Share-Based Compensation Arrangement By Share-Based Payment Award, Maximum Contribution Percent</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Share-Based Compensation Arrangement By Share-Based Payment Award, Number Of Offering Periods</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Share-Based Compensation Arrangement By Share-Based Payment Award, Number Of Shares Authorized Per Purchase Period</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Share Based Compensation Arrangement By Share Based Payment Award Number Of Shares Available For Grant, Additional Shares</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price of Common Stock, Offering Period</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted-average period over which cost not yet recognized is expected to be recognized for award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cost to be recognized for nonvested award under share-based payment arrangement. Excludes share and unit options.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cost to be recognized for option under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The highest percentage of annual salary that an employee is permitted to utilize with respect to the plan.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The highest quantity of shares an employee can purchase under the plan per period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of additional shares authorized for issuance under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of shares authorized for issuance under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The difference between the maximum number of shares (or other type of equity) authorized for issuance under the plan (including the effects of amendments and adjustments), and the sum of: 1) the number of shares (or other type of equity) already issued upon exercise of options or other equity-based awards under the plan; and 2) shares (or other type of equity) reserved for issuance on granting of outstanding awards, net of cancellations and forfeitures, if applicable.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of shares issued under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of shares purchased for issuance under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (l)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Purchase price of common stock expressed as a percentage of its fair value.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of shares of capital stock issued (purchased by employees) in connection with an employee stock ownership plan.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI https://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126973232&amp;loc=d3e21463-112644<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 40<br> -Section 25<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=109244457&amp;loc=d3e16649-113920<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PlanNameAxis=calx_A2017NonqualifiedEmployeeStockPurchasePlanMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PlanNameAxis=calx_A2017NonqualifiedEmployeeStockPurchasePlanMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PlanNameAxis=calx_EmployeeStockPurchasePlanMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PlanNameAxis=calx_EmployeeStockPurchasePlanMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>67
<FILENAME>R55.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252654429040">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stockholders' Equity - Assumptions (Details)<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Stock Options</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract', window );"><strong>Weighted average assumptions used to estimate fair value of stock options</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate', window );">Expected volatility</a></td>
<td class="nump">58.00%<span></span>
</td>
<td class="nump">56.00%<span></span>
</td>
<td class="nump">53.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1', window );">Expected life</a></td>
<td class="text">6 years 1 month 6 days<span></span>
</td>
<td class="text">6 years<span></span>
</td>
<td class="text">6 years 1 month 6 days<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate', window );">Risk-free interest rate</a></td>
<td class="nump">3.15%<span></span>
</td>
<td class="nump">1.11%<span></span>
</td>
<td class="nump">0.48%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember', window );">ESPP</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract', window );"><strong>Weighted average assumptions used to estimate fair value of stock options</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate', window );">Expected volatility</a></td>
<td class="nump">62.00%<span></span>
</td>
<td class="nump">63.00%<span></span>
</td>
<td class="nump">70.00%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1', window );">Expected life</a></td>
<td class="text">6 months<span></span>
</td>
<td class="text">6 months<span></span>
</td>
<td class="text">4 months 24 days<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate', window );">Risk-free interest rate</a></td>
<td class="nump">2.16%<span></span>
</td>
<td class="nump">0.05%<span></span>
</td>
<td class="nump">0.12%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The estimated measure of the percentage by which a share price is expected to fluctuate during a period. Volatility also may be defined as a probability-weighted measure of the dispersion of returns about the mean. The volatility of a share price is the standard deviation of the continuously compounded rates of return on the share over a specified period. That is the same as the standard deviation of the differences in the natural logarithms of the stock prices plus dividends, if any, over the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(ii)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The risk-free interest rate assumption that is used in valuing an option on its own shares.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(iv)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Expected term of award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(i)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>68
<FILENAME>R56.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252657472144">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stockholders' Equity - Unrecognized Stock-based Compensation Expenses (Details)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th">
<div>Dec. 31, 2022 </div>
<div>USD ($)</div>
</th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth', window );">Stock-based compensation expense to be recognized in next twelve months</a></td>
<td class="nump">$ 37,200<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo', window );">Stock-based compensation expense to be recognized two years after filing</a></td>
<td class="nump">22,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree', window );">Stock-based compensation expense to be recognized three years after filing</a></td>
<td class="nump">16,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour', window );">Stock-based compensation expense to be recognized four years after filing</a></td>
<td class="nump">7,700<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Stock Options</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized', window );">Unrecognized stock-based compensation expense</a></td>
<td class="nump">$ 73,095<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Weighted-average amortization period</a></td>
<td class="text">2 years 3 months 18 days<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember', window );">ESPP</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized', window );">Unrecognized stock-based compensation expense</a></td>
<td class="nump">$ 9,781<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Weighted-average amortization period</a></td>
<td class="text">9 months 18 days<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized In Year Four</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized In Year Three</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized In Year Two</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized Next Twelve Month</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cost not yet recognized for nonvested award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted-average period over which cost not yet recognized is expected to be recognized for award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>69
<FILENAME>R57.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252659388944">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Stockholders' Equity - Shares Reserved For Future Issuance (Details) - shares<br> shares in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Stock options outstanding (in shares)</a></td>
<td class="nump">8,287<span></span>
</td>
<td class="nump">6,648<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance', window );">Shares available for future issuance (in shares)</a></td>
<td class="nump">22,028<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember', window );">ESPP</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance', window );">Shares available for future issuance (in shares)</a></td>
<td class="nump">4,712<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PlanNameAxis=calx_A2019PlanMember', window );">2019 Plan</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant', window );">Shares available for future grant under 2019 Plan (in shares)</a></td>
<td class="nump">5,986<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PlanNameAxis=calx_A2017NonqualifiedEmployeeStockPurchasePlanMember', window );">2017 Nonqualified Employee Stock Purchase Plan | ESPP</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant', window );">Shares available for future grant under 2019 Plan (in shares)</a></td>
<td class="nump">3,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance', window );">Shares available for future issuance (in shares)</a></td>
<td class="nump">3,043<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Aggregate number of common shares reserved for future issuance.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.29)<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockCapitalSharesReservedForFutureIssuance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The difference between the maximum number of shares (or other type of equity) authorized for issuance under the plan (including the effects of amendments and adjustments), and the sum of: 1) the number of shares (or other type of equity) already issued upon exercise of options or other equity-based awards under the plan; and 2) shares (or other type of equity) reserved for issuance on granting of outstanding awards, net of cancellations and forfeitures, if applicable.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of options outstanding, including both vested and non-vested options.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(ii)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(i)<br> -URI https://asc.fasb.org/extlink&amp;oid=128089324&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PlanNameAxis=calx_A2019PlanMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PlanNameAxis=calx_A2019PlanMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PlanNameAxis=calx_A2017NonqualifiedEmployeeStockPurchasePlanMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PlanNameAxis=calx_A2017NonqualifiedEmployeeStockPurchasePlanMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>70
<FILENAME>R58.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661566400">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Employee Benefit Plan (Details) - USD ($)<br> $ in Millions</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CompensationAndRetirementDisclosureAbstract', window );"><strong>Retirement Benefits [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DefinedContributionPlanCostRecognized', window );">Company matching contributions, 401(K) Plan</a></td>
<td class="nump">$ 4.1<span></span>
</td>
<td class="nump">$ 3.2<span></span>
</td>
<td class="nump">$ 2.7<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CompensationAndRetirementDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CompensationAndRetirementDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DefinedContributionPlanCostRecognized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cost for defined contribution plan.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 70<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=49170846&amp;loc=d3e28014-114942<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DefinedContributionPlanCostRecognized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>71
<FILENAME>R59.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252655936416">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Accumulated Other Comprehensive Loss (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward', window );"><strong>Increase (Decrease) in Stockholders' Equity [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at beginning of period</a></td>
<td class="nump">$ 568,428<span></span>
</td>
<td class="nump">$ 280,325<span></span>
</td>
<td class="nump">$ 154,028<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Other comprehensive income (loss)</a></td>
<td class="num">(2,153)<span></span>
</td>
<td class="num">(129)<span></span>
</td>
<td class="nump">663<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at end of period</a></td>
<td class="nump">679,567<span></span>
</td>
<td class="nump">568,428<span></span>
</td>
<td class="nump">280,325<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedOtherComprehensiveIncomeMember', window );">Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward', window );"><strong>Increase (Decrease) in Stockholders' Equity [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at beginning of period</a></td>
<td class="num">(320)<span></span>
</td>
<td class="num">(191)<span></span>
</td>
<td class="num">(854)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Other comprehensive income (loss)</a></td>
<td class="num">(2,153)<span></span>
</td>
<td class="num">(129)<span></span>
</td>
<td class="nump">663<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at end of period</a></td>
<td class="num">(2,473)<span></span>
</td>
<td class="num">(320)<span></span>
</td>
<td class="num">(191)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember', window );">Unrealized Gains and Losses on Available-for-Sale Marketable Securities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward', window );"><strong>Increase (Decrease) in Stockholders' Equity [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at beginning of period</a></td>
<td class="num">(179)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Other comprehensive income (loss)</a></td>
<td class="num">(1,521)<span></span>
</td>
<td class="num">(179)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at end of period</a></td>
<td class="num">(1,700)<span></span>
</td>
<td class="num">(179)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedTranslationAdjustmentMember', window );">Foreign Currency Translation Adjustments</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward', window );"><strong>Increase (Decrease) in Stockholders' Equity [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at beginning of period</a></td>
<td class="num">(141)<span></span>
</td>
<td class="num">(191)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Other comprehensive income (loss)</a></td>
<td class="num">(632)<span></span>
</td>
<td class="nump">50<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at end of period</a></td>
<td class="num">$ (773)<span></span>
</td>
<td class="num">$ (141)<span></span>
</td>
<td class="num">$ (191)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInStockholdersEquityRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of other comprehensive income (loss) attributable to parent entity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669625-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(3)<br> -URI https://asc.fasb.org/extlink&amp;oid=109239629&amp;loc=SL4573702-111684<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 20<br> -URI https://asc.fasb.org/extlink&amp;oid=126929396&amp;loc=SL4569643-111683<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669619-108580<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 19<br> -URI https://asc.fasb.org/extlink&amp;oid=126929396&amp;loc=SL4569616-111683<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -URI https://asc.fasb.org/extlink&amp;oid=122038336&amp;loc=d3e74512-122707<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedOtherComprehensiveIncomeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedOtherComprehensiveIncomeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedTranslationAdjustmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedTranslationAdjustmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>72
<FILENAME>R60.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661963184">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Income Taxes - Loss before Provision for Income Taxes (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxDisclosureAbstract', window );"><strong>Income Tax Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic', window );">Domestic</a></td>
<td class="nump">$ 51,442<span></span>
</td>
<td class="nump">$ 70,776<span></span>
</td>
<td class="nump">$ 33,777<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign', window );">Foreign</a></td>
<td class="nump">2,600<span></span>
</td>
<td class="nump">1,878<span></span>
</td>
<td class="nump">507<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest', window );">Income before income taxes</a></td>
<td class="nump">$ 54,042<span></span>
</td>
<td class="nump">$ 72,654<span></span>
</td>
<td class="nump">$ 34,284<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The portion of earnings or loss from continuing operations before income taxes that is attributable to domestic operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.3)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8906-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 940<br> -SubTopic 20<br> -Section 25<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=126941158&amp;loc=d3e41242-110953<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(10))<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(8))<br> -URI https://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 235<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-05(b)(2))<br> -URI https://asc.fasb.org/extlink&amp;oid=120399901&amp;loc=d3e537907-122884<br><br>Reference 9: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8924-108599<br><br>Reference 10: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(15))<br> -URI https://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The portion of earnings or loss from continuing operations before income taxes that is attributable to foreign operations, which is defined as Income or Loss generated from operations located outside the entity's country of domicile.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.3)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>73
<FILENAME>R61.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252659394448">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Income Taxes - Components of Income Tax Provision (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract', window );"><strong>Current:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CurrentFederalTaxExpenseBenefit', window );">Federal</a></td>
<td class="nump">$ 3,671<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CurrentStateAndLocalTaxExpenseBenefit', window );">State</a></td>
<td class="nump">6,555<span></span>
</td>
<td class="nump">2,818<span></span>
</td>
<td class="nump">285<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CurrentForeignTaxExpenseBenefit', window );">Foreign</a></td>
<td class="nump">874<span></span>
</td>
<td class="nump">438<span></span>
</td>
<td class="nump">507<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CurrentIncomeTaxExpenseBenefit', window );">Current income tax</a></td>
<td class="nump">11,100<span></span>
</td>
<td class="nump">3,256<span></span>
</td>
<td class="nump">792<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract', window );"><strong>Deferred:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredFederalIncomeTaxExpenseBenefit', window );">Federal</a></td>
<td class="nump">6,336<span></span>
</td>
<td class="num">(157,355)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit', window );">State</a></td>
<td class="num">(4,372)<span></span>
</td>
<td class="num">(11,631)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredForeignIncomeTaxExpenseBenefit', window );">Foreign</a></td>
<td class="num">(32)<span></span>
</td>
<td class="nump">6<span></span>
</td>
<td class="nump">8<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxExpenseBenefit', window );">Deferred income tax</a></td>
<td class="nump">1,932<span></span>
</td>
<td class="num">(168,980)<span></span>
</td>
<td class="nump">8<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxExpenseBenefit', window );">Income tax expense (benefit)</a></td>
<td class="nump">$ 13,032<span></span>
</td>
<td class="num">$ (165,724)<span></span>
</td>
<td class="nump">$ 800<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CurrentFederalTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of current federal tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, current national tax expense (benefit) for non-US (United States of America) jurisdiction.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CurrentFederalTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CurrentForeignTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of current foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CurrentForeignTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CurrentIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of current income tax expense (benefit) pertaining to taxable income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.2)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CurrentIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CurrentStateAndLocalTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of current state and local tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, current regional, territorial, and provincial tax expense (benefit) for non-US (United States of America) jurisdiction.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CurrentStateAndLocalTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredFederalIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred federal tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, deferred national tax expense (benefit) for non-US (United States of America) jurisdiction.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredFederalIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredForeignIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredForeignIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred income tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.1)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.2)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred state and local tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, deferred regional, territorial, and provincial tax expense (benefit) for non-US (United States of America) jurisdiction.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I.7)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32672-109319<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (h)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 20<br> -Section 45<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=123586238&amp;loc=d3e38679-109324<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(9))<br> -URI https://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>74
<FILENAME>R62.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252659529408">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Income Taxes - Income Tax Rate Reconciliation (Details)<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxDisclosureAbstract', window );"><strong>Income Tax Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate', window );">Federal statutory rate</a></td>
<td class="nump">21.00%<span></span>
</td>
<td class="nump">21.00%<span></span>
</td>
<td class="nump">21.00%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes', window );">Impact of state taxes</a></td>
<td class="nump">1.40%<span></span>
</td>
<td class="num">(15.60%)<span></span>
</td>
<td class="nump">0.10%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential', window );">Foreign operations</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="num">(0.20%)<span></span>
</td>
<td class="nump">0.60%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch', window );">R&amp;D tax credits</a></td>
<td class="num">(7.40%)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(4.80%)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment', window );">R&amp;D tax credits</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1.40%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent', window );">Foreign income inclusion</a></td>
<td class="nump">1.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost', window );">Stock-based compensation</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="num">(12.80%)<span></span>
</td>
<td class="num">(4.10%)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther', window );">Other permanent items</a></td>
<td class="num">(0.20%)<span></span>
</td>
<td class="num">(0.30%)<span></span>
</td>
<td class="nump">0.60%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes', window );">Tax true-up</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="num">(0.20%)<span></span>
</td>
<td class="num">(0.40%)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance', window );">Valuation allowance</a></td>
<td class="num">(4.00%)<span></span>
</td>
<td class="num">(208.30%)<span></span>
</td>
<td class="num">(48.10%)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss', window );">Net operating loss expiration / attribute expiration</a></td>
<td class="nump">5.50%<span></span>
</td>
<td class="num">(13.10%)<span></span>
</td>
<td class="nump">37.40%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent', window );">Base erosion anti-abuse tax</a></td>
<td class="nump">6.80%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateContinuingOperations', window );">Total</a></td>
<td class="nump">24.10%<span></span>
</td>
<td class="num">(228.10%)<span></span>
</td>
<td class="nump">2.30%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Effective Income Tax Rate Reconciliation, Expiration Of Operating Income (Loss)</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateContinuingOperations">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateContinuingOperations</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of domestic federal statutory tax rate applicable to pretax income (loss).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(2))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of reported income tax expense from difference to expected income tax expense (benefit) computed by applying domestic federal statutory income tax rate to pretax income (loss) from continuing operations, attributable to base erosion and anti-abuse tax (BEAT).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to changes in the valuation allowance for deferred tax assets.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of reported income tax benefit from difference to income tax expense (benefit) computed by applying domestic federal statutory income tax rate to pretax income (loss) from continuing operations, attributable to foreign-derived intangible income (FDII).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to statutory income tax expense (benefit) outside of the country of domicile.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to other nondeductible expenses.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to research and development expense.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying domestic federal statutory income tax rate to pretax income (loss) from continuing operation, attributable to nondeductible expense for share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to revisions of previously reported income tax expense.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to state and local income tax expense (benefit), net of federal tax expense (benefit).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to research tax credit.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI https://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>75
<FILENAME>R63.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252656822736">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Income Taxes - Components of Deferred Tax Assets and Liabilities (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsGrossAbstract', window );"><strong>Deferred tax assets:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards', window );">Net operating loss carryforwards</a></td>
<td class="nump">$ 44,189<span></span>
</td>
<td class="nump">$ 82,672<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardAmount', window );">Tax credit carryforwards</a></td>
<td class="nump">56,717<span></span>
</td>
<td class="nump">52,538<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities', window );">Accruals and reserves</a></td>
<td class="nump">11,679<span></span>
</td>
<td class="nump">10,302<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsDeferredIncome', window );">Deferred revenue</a></td>
<td class="nump">13,156<span></span>
</td>
<td class="nump">11,351<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost', window );">Stock-based compensation</a></td>
<td class="nump">7,417<span></span>
</td>
<td class="nump">4,921<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts', window );">Capitalized R&amp;D</a></td>
<td class="nump">67,932<span></span>
</td>
<td class="nump">38,842<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsGross', window );">Gross deferred tax assets</a></td>
<td class="nump">201,090<span></span>
</td>
<td class="nump">200,626<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsValuationAllowance', window );">Valuation allowance</a></td>
<td class="num">(29,914)<span></span>
</td>
<td class="num">(29,236)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsNet', window );">Total deferred tax assets</a></td>
<td class="nump">171,176<span></span>
</td>
<td class="nump">171,390<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxLiabilitiesNetAbstract', window );"><strong>Deferred tax liabilities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment', window );">Fixed assets</a></td>
<td class="num">(2,648)<span></span>
</td>
<td class="num">(1,511)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets', window );">Intangible assets</a></td>
<td class="num">(1,497)<span></span>
</td>
<td class="num">(917)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxLiabilities', window );">Total deferred tax liabilities</a></td>
<td class="num">(4,145)<span></span>
</td>
<td class="num">(2,428)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsLiabilitiesNet', window );">Deferred tax assets</a></td>
<td class="nump">$ 167,031<span></span>
</td>
<td class="nump">$ 168,962<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Deferred Tax Assets, Deferred Expense, Capitalized Research and Development Costs</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax liability attributable to taxable temporary differences.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(26)(b))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(15)(b)(2))<br> -URI https://asc.fasb.org/extlink&amp;oid=126734703&amp;loc=d3e572229-122910<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(15)(2))<br> -URI https://asc.fasb.org/extlink&amp;oid=126897435&amp;loc=d3e534808-122878<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(26)(a))<br> -URI https://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsDeferredIncome">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from deferred income.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32632-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32621-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsDeferredIncome</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsGrossAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsGrossAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsLiabilitiesNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, without jurisdictional netting.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsLiabilitiesNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible operating loss carryforwards.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32632-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32621-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsOperatingLossCarryforwards</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from share-based compensation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32621-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32632-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from accrued liabilities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32632-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32621-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsValuationAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax assets for which it is more likely than not that a tax benefit will not be realized.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax liability attributable to taxable temporary differences from intangible assets other than goodwill.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32621-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32632-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxLiabilitiesNetAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxLiabilitiesNetAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax liability attributable to taxable temporary differences from property, plant, and equipment.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32621-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32632-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TaxCreditCarryforwardAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of the tax credit carryforward, before tax effects, available to reduce future taxable income under enacted tax laws.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32559-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TaxCreditCarryforwardAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>76
<FILENAME>R64.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252662084432">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Income Taxes - Unrecognized Tax Benefits Activity (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward', window );"><strong>Unrecognized Tax Benefits [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefits', window );">Balance at beginning of year</a></td>
<td class="nump">$ 25,992<span></span>
</td>
<td class="nump">$ 23,516<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions', window );">Reduction for tax positions related to prior year</a></td>
<td class="num">(905)<span></span>
</td>
<td class="num">(1,427)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions', window );">Additions for tax positions related to prior year</a></td>
<td class="nump">1,232<span></span>
</td>
<td class="nump">1,947<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions', window );">Additions for tax positions related to current year</a></td>
<td class="nump">2,896<span></span>
</td>
<td class="nump">1,956<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefits', window );">Balance at end of year</a></td>
<td class="nump">$ 29,215<span></span>
</td>
<td class="nump">$ 25,992<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefits">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of unrecognized tax benefits.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10B<br> -URI https://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=SL37586934-109318<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefits</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of decrease in unrecognized tax benefits resulting from tax positions taken in prior period tax returns.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in unrecognized tax benefits resulting from tax positions that have been or will be taken in current period tax return.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)(2)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in unrecognized tax benefits resulting from tax positions taken in prior period tax returns.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>77
<FILENAME>R65.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252656583456">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Income Taxes - Textual (Details) - USD ($)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_IncomeTaxesLineItems', window );"><strong>Income Taxes [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount', window );">Increase (decrease) in valuation allowance</a></td>
<td class="nump">$ 700,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsValuationAllowance', window );">Valuation allowance</a></td>
<td class="nump">29,914,000<span></span>
</td>
<td class="nump">$ 29,236,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardAmount', window );">Research and development credits</a></td>
<td class="nump">56,717,000<span></span>
</td>
<td class="nump">52,538,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefits', window );">Unrecognized tax benefits</a></td>
<td class="nump">29,215,000<span></span>
</td>
<td class="nump">$ 25,992,000<span></span>
</td>
<td class="nump">$ 23,516,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate', window );">Unrecognized tax benefits that would impact effective tax rate</a></td>
<td class="nump">15,300,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued', window );">Accrued interest or penalties for uncertain income tax</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_DomesticCountryMember', window );">U.S. Federal</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_IncomeTaxesLineItems', window );"><strong>Income Taxes [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLossCarryforwards', window );">Operating loss carryforward</a></td>
<td class="nump">205,200,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardAmount', window );">Research and development credits</a></td>
<td class="nump">40,700,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_StateAndLocalJurisdictionMember', window );">State</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_IncomeTaxesLineItems', window );"><strong>Income Taxes [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLossCarryforwards', window );">Operating loss carryforward</a></td>
<td class="nump">24,000,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=calx_CaliforniaStateMember', window );">California State</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_IncomeTaxesLineItems', window );"><strong>Income Taxes [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardAmount', window );">Research and development credits</a></td>
<td class="nump">47,000,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=calx_OtherStateMember', window );">Other State</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_IncomeTaxesLineItems', window );"><strong>Income Taxes [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardAmount', window );">Research and development credits</a></td>
<td class="nump">$ 2,700,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_IncomeTaxesLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Income Taxes [Line Items]</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_IncomeTaxesLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsValuationAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax assets for which it is more likely than not that a tax benefit will not be realized.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLossCarryforwards">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of operating loss carryforward, before tax effects, available to reduce future taxable income under enacted tax laws.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32559-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLossCarryforwards</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TaxCreditCarryforwardAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of the tax credit carryforward, before tax effects, available to reduce future taxable income under enacted tax laws.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32559-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TaxCreditCarryforwardAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefits">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of unrecognized tax benefits.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10B<br> -URI https://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=SL37586934-109318<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefits</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount accrued for interest on an underpayment of income taxes and penalties related to a tax position claimed or expected to be claimed in the tax return.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32718-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The total amount of unrecognized tax benefits that, if recognized, would affect the effective tax rate.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in the valuation allowance for a specified deferred tax asset.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_DomesticCountryMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxAuthorityAxis=us-gaap_DomesticCountryMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_StateAndLocalJurisdictionMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxAuthorityAxis=us-gaap_StateAndLocalJurisdictionMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxAuthorityAxis=calx_CaliforniaStateMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxAuthorityAxis=calx_CaliforniaStateMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxAuthorityAxis=calx_OtherStateMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxAuthorityAxis=calx_OtherStateMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>78
<FILENAME>R66.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252656746320">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Net Income Per Common Share - Basic and Diluted Shares Calculation (Details) - USD ($)<br> $ / shares in Units, shares in Thousands, $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLossAbstract', window );"><strong>Numerator:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 41,010<span></span>
</td>
<td class="nump">$ 238,378<span></span>
</td>
<td class="nump">$ 33,484<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract', window );"><strong>Denominator:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic', window );">Weighted-average common shares - basic (in shares)</a></td>
<td class="nump">65,058<span></span>
</td>
<td class="nump">63,277<span></span>
</td>
<td class="nump">59,074<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements', window );">Effect of dilutive potential common shares (in shares)</a></td>
<td class="nump">3,853<span></span>
</td>
<td class="nump">4,579<span></span>
</td>
<td class="nump">2,924<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding', window );">Weighted-average common shares - diluted (in shares)</a></td>
<td class="nump">68,911<span></span>
</td>
<td class="nump">67,856<span></span>
</td>
<td class="nump">61,998<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EarningsPerShareBasic', window );">Basic net income (loss) per common share (in dollars per share)</a></td>
<td class="nump">$ 0.63<span></span>
</td>
<td class="nump">$ 3.77<span></span>
</td>
<td class="nump">$ 0.57<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EarningsPerShareDiluted', window );">Diluted net income (loss) per common share (in dollars per share)</a></td>
<td class="nump">$ 0.60<span></span>
</td>
<td class="nump">$ 3.51<span></span>
</td>
<td class="nump">$ 0.54<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount', window );">Potentially dilutive shares, weighted-average (in shares)</a></td>
<td class="nump">1,758<span></span>
</td>
<td class="nump">1,006<span></span>
</td>
<td class="nump">753<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) or earnings per unit (EPU) in the future that were not included in the computation of diluted EPS or EPU because to do so would increase EPS or EPU amounts or decrease loss per share or unit amounts for the period presented.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -URI https://asc.fasb.org/extlink&amp;oid=126732423&amp;loc=SL123482106-238011<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1448-109256<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1337-109256<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126732423&amp;loc=SL123482106-238011<br><br>Reference 9: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI https://asc.fasb.org/extlink&amp;oid=128363288&amp;loc=d3e4984-109258<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -URI https://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI https://asc.fasb.org/extlink&amp;oid=128363288&amp;loc=d3e3842-109258<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22644-107794<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1252-109256<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=SL5780133-109256<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -URI https://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareDiluted">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI https://asc.fasb.org/extlink&amp;oid=128363288&amp;loc=d3e4984-109258<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22644-107794<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI https://asc.fasb.org/extlink&amp;oid=128363288&amp;loc=d3e3842-109258<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1252-109256<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=SL5780133-109256<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126732423&amp;loc=SL123482106-238011<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -URI https://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -URI https://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1337-109256<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -URI https://asc.fasb.org/extlink&amp;oid=126732423&amp;loc=SL123482106-238011<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareDiluted</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of share based payment arrangements using the treasury stock method.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=126962052&amp;loc=d3e4991-113900<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 22<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1707-109256<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28A<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1500-109256<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 23<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1757-109256<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI https://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI https://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=126732423&amp;loc=SL123482106-238011<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI https://asc.fasb.org/extlink&amp;oid=124431353&amp;loc=SL124452729-227067<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI https://asc.fasb.org/extlink&amp;oid=126953954&amp;loc=SL114868664-224227<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI https://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI https://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=SL5780133-109256<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669619-108580<br><br>Reference 25: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8924-108599<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 205<br> -SubTopic 20<br> -Section 50<br> -Paragraph 7<br> -URI https://asc.fasb.org/extlink&amp;oid=109222650&amp;loc=SL51721683-107760<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126968391&amp;loc=SL7669625-108580<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442526-122756<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI https://asc.fasb.org/extlink&amp;oid=126975872&amp;loc=SL124442552-122756<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8906-108599<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLossAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLossAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 16<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1505-109256<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=126958026&amp;loc=d3e1448-109256<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfSharesOutstandingBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>79
<FILENAME>R67.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252658854544">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Revenue from Contracts with Customers - Revenue by Geographic Region (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems', window );"><strong>Revenues from External Customers and Long-Lived Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 867,827<span></span>
</td>
<td class="nump">$ 679,394<span></span>
</td>
<td class="nump">$ 541,239<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_US', window );">United States</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems', window );"><strong>Revenues from External Customers and Long-Lived Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">786,802<span></span>
</td>
<td class="nump">565,964<span></span>
</td>
<td class="nump">473,779<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_StatementGeographicalAxis=srt_EuropeMember', window );">Americas excluding U.S.</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems', window );"><strong>Revenues from External Customers and Long-Lived Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">41,892<span></span>
</td>
<td class="nump">45,719<span></span>
</td>
<td class="nump">27,802<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_StatementGeographicalAxis=calx_AmericasExUSMember', window );">Europe</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems', window );"><strong>Revenues from External Customers and Long-Lived Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">26,916<span></span>
</td>
<td class="nump">45,879<span></span>
</td>
<td class="nump">22,925<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_StatementGeographicalAxis=calx_MiddleEastAndAfricaMember', window );">Middle East &amp; Africa</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems', window );"><strong>Revenues from External Customers and Long-Lived Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">10,885<span></span>
</td>
<td class="nump">19,018<span></span>
</td>
<td class="nump">14,075<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_StatementGeographicalAxis=srt_AsiaPacificMember', window );">Asia Pacific</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems', window );"><strong>Revenues from External Customers and Long-Lived Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 1,332<span></span>
</td>
<td class="nump">$ 2,814<span></span>
</td>
<td class="nump">$ 2,658<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, excluding tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value added and excise.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8906-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 40<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e9031-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e9038-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8933-108599<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130543-203045<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e8736-108599<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 42<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e9054-108599<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130545-203045<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 924<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -URI https://asc.fasb.org/extlink&amp;oid=6472922&amp;loc=d3e499488-122856<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_US">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_US</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=srt_EuropeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=srt_EuropeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=calx_AmericasExUSMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=calx_AmericasExUSMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=calx_MiddleEastAndAfricaMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=calx_MiddleEastAndAfricaMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=srt_AsiaPacificMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=srt_AsiaPacificMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>80
<FILENAME>R68.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252657437440">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Revenue from Contracts with Customers - Property and Equipment by Geographic Region (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems', window );"><strong>Revenues from External Customers and Long-Lived Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Property and equipment, net</a></td>
<td class="nump">$ 25,834<span></span>
</td>
<td class="nump">$ 21,783<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_US', window );">United States</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems', window );"><strong>Revenues from External Customers and Long-Lived Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Property and equipment, net</a></td>
<td class="nump">21,785<span></span>
</td>
<td class="nump">19,900<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_CN', window );">China</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems', window );"><strong>Revenues from External Customers and Long-Lived Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Property and equipment, net</a></td>
<td class="nump">3,220<span></span>
</td>
<td class="nump">1,840<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_IN', window );">India</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems', window );"><strong>Revenues from External Customers and Long-Lived Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Property and equipment, net</a></td>
<td class="nump">$ 829<span></span>
</td>
<td class="nump">$ 43<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -URI https://asc.fasb.org/extlink&amp;oid=126734703&amp;loc=d3e572229-122910<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 360<br> -Section 50<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=124429447&amp;loc=SL124453093-239630<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI https://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_US">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_US</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_CN">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_CN</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_IN">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_IN</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>81
<FILENAME>R69.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661904160">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Revenue from Contracts with Customers - Contract Costs (Details) - USD ($)<br></strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerAbstract', window );"><strong>Revenue from Contract with Customer [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CapitalizedContractCostGross', window );">Capitalized contract cost, gross</a></td>
<td class="nump">$ 11,200,000<span></span>
</td>
<td class="nump">$ 7,400,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CapitalizedContractCostAmortization', window );">Capitalized contract cost, amortization</a></td>
<td class="nump">4,000,000<span></span>
</td>
<td class="nump">1,400,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CapitalizedContractCostImpairmentLoss', window );">Capitalized contract cost, impairment</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CapitalizedContractCostAmortization">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization expense for asset recognized from cost incurred to obtain or fulfill contract with customer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 340<br> -SubTopic 40<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126905575&amp;loc=SL49131252-203054<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CapitalizedContractCostAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CapitalizedContractCostGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, before accumulated amortization and accumulated impairment loss, of asset recognized from cost incurred to obtain or fulfill contract with customer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 340<br> -SubTopic 40<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126905575&amp;loc=SL49131252-203054<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CapitalizedContractCostGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CapitalizedContractCostImpairmentLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of impairment loss for asset recognized from cost incurred to obtain or fulfill contract with customer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 340<br> -SubTopic 40<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126905575&amp;loc=SL49131252-203054<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CapitalizedContractCostImpairmentLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>82
<FILENAME>R70.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252661946864">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Revenue from Contracts with Customers - Performance Obligation (Details)<br> $ in Millions</strong></div></th>
<th class="th">
<div>Dec. 31, 2022 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerAbstract', window );"><strong>Revenue from Contract with Customer [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueRemainingPerformanceObligation', window );">Performance obligations expected to be satisfied</a></td>
<td class="nump">$ 199.0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis=2023-01-01', window );">Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2023-01-01</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems', window );"><strong>Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueRemainingPerformanceObligationPercentage', window );">Remaining performance obligation, percentage</a></td>
<td class="nump">35.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1', window );">Performance obligations expected to be satisfied, expected timing</a></td>
<td class="text">12 months<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueRemainingPerformanceObligation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of transaction price allocated to performance obligation that has not been recognized as revenue.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130556-203045<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueRemainingPerformanceObligation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Period in which remaining performance obligation is expected to be recognized as revenue, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (b)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130556-203045<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueRemainingPerformanceObligationPercentage">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of remaining performance obligation to total remaining performance obligation not recognized as revenue.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (b)(1)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130556-203045<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueRemainingPerformanceObligationPercentage</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis=2023-01-01">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis=2023-01-01</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>83
<FILENAME>R71.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252662575520">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Revenue from Contracts with Customers - Contract Assets and Liabilities (Details) - USD ($)<br> $ in Millions</strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerAbstract', window );"><strong>Revenue from Contract with Customer [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ContractWithCustomerAssetNet', window );">Contract with customer, asset</a></td>
<td class="nump">$ 2.3<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1.7<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent', window );">Contract with customer, asset, expected to be billed, percent</a></td>
<td class="nump">81.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_calx_ContractWithCustomerAssetPriorPeriodNotRecognized', window );">Contract with customer, asset, prior period, not recognized</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.3<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ContractWithCustomerLiability', window );">Deferred revenue</a></td>
<td class="nump">$ 58.6<span></span>
</td>
<td class="nump">$ 49.5<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ContractWithCustomerLiabilityRevenueRecognized', window );">Contract with customer, liability, revenue recognized</a></td>
<td class="nump">26.8<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInContractWithCustomerLiability', window );">Increase (Decrease) in Contract with Customer, Liability</a></td>
<td class="nump">$ 9.1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Contract With Customer, Asset, Expected To Be Billed, Year One, Percent</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_calx_ContractWithCustomerAssetPriorPeriodNotRecognized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Contract With Customer, Asset, Prior Period, Not Recognized</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">calx_ContractWithCustomerAssetPriorPeriodNotRecognized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>calx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerAssetNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after allowance for credit loss, of right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130549-203045<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=126919976&amp;loc=SL49130531-203044<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 45<br> -Paragraph 3<br> -URI https://asc.fasb.org/extlink&amp;oid=126919976&amp;loc=SL49130533-203044<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ContractWithCustomerAssetNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI https://asc.fasb.org/extlink&amp;oid=126919976&amp;loc=SL49130531-203044<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130549-203045<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI https://asc.fasb.org/extlink&amp;oid=126919976&amp;loc=SL49130532-203044<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ContractWithCustomerLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerLiabilityRevenueRecognized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of revenue recognized that was previously included in balance of obligation to transfer good or service to customer for which consideration from customer has been received or is due.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126920106&amp;loc=SL49130549-203045<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ContractWithCustomerLiabilityRevenueRecognized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInContractWithCustomerLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in obligation to transfer good or service to customer for which consideration has been received or is receivable.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=126954810&amp;loc=d3e3602-108585<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 912<br> -SubTopic 310<br> -Section 45<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI https://asc.fasb.org/extlink&amp;oid=126938201&amp;loc=d3e55415-109406<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInContractWithCustomerLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>84
<FILENAME>R72.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.4</span><table class="report" border="0" cellspacing="2" id="idm140252657478976">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Revenue from Contracts with Customers - Concentration Risk (Details) - Customer Concentration Risk<br></strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_MajorCustomersAxis=calx_LumenTechnologiesIncMember', window );">Lumen Technologies, Inc. | Revenue from Contract with Customer Benchmark</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ConcentrationRiskLineItems', window );"><strong>Concentration Risk [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ConcentrationRiskPercentage1', window );">Concentration of credit risk, percentage</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">11.00%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_MajorCustomersAxis=calx_OneCustomerMember', window );">One Customer | Accounts Receivable</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ConcentrationRiskLineItems', window );"><strong>Concentration Risk [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ConcentrationRiskPercentage1', window );">Concentration of credit risk, percentage</a></td>
<td class="nump">11.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_MajorCustomersAxis=calx_CustomerTwoMember', window );">Customer Two | Accounts Receivable</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ConcentrationRiskLineItems', window );"><strong>Concentration Risk [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ConcentrationRiskPercentage1', window );">Concentration of credit risk, percentage</a></td>
<td class="nump">12.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskPercentage1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>For an entity that discloses a concentration risk in relation to quantitative amount, which serves as the "benchmark" (or denominator) in the equation, this concept represents the concentration percentage derived from the division.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 42<br> -URI https://asc.fasb.org/extlink&amp;oid=126901519&amp;loc=d3e9054-108599<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 18<br> -URI https://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6351-108592<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 20<br> -URI https://asc.fasb.org/extlink&amp;oid=123594938&amp;loc=d3e13531-108611<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 21<br> -Subparagraph (a)<br> -URI https://asc.fasb.org/extlink&amp;oid=123594938&amp;loc=d3e13537-108611<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 20<br> -URI https://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6404-108592<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskPercentage1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_MajorCustomersAxis=calx_LumenTechnologiesIncMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_MajorCustomersAxis=calx_LumenTechnologiesIncMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskByTypeAxis=us-gaap_CustomerConcentrationRiskMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskByTypeAxis=us-gaap_CustomerConcentrationRiskMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_RevenueFromContractWithCustomerMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_RevenueFromContractWithCustomerMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_MajorCustomersAxis=calx_OneCustomerMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_MajorCustomersAxis=calx_OneCustomerMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_AccountsReceivableMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_AccountsReceivableMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_MajorCustomersAxis=calx_CustomerTwoMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_MajorCustomersAxis=calx_CustomerTwoMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>85
<FILENAME>calx-20221231_htm.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xml:lang="en-US"
  xmlns="http://www.xbrl.org/2003/instance"
  xmlns:calx="http://www.calix.com/20221231"
  xmlns:country="http://xbrl.sec.gov/country/2022"
  xmlns:dei="http://xbrl.sec.gov/dei/2022"
  xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:srt="http://fasb.org/srt/2022"
  xmlns:us-gaap="http://fasb.org/us-gaap/2022"
  xmlns:xbrldi="http://xbrl.org/2006/xbrldi"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <link:schemaRef xlink:href="calx-20221231.xsd" xlink:type="simple"/>
    <context id="i3e65b62e096845678e29e95530315bfa_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ia8228bdbbce54d7c9624a78d5d2b980e_I20220701">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2022-07-01</instant>
        </period>
    </context>
    <context id="ieb250817b6e542ed8d81042a73b3771f_I20230210">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2023-02-10</instant>
        </period>
    </context>
    <context id="i18ca6c2cd59045dcb331174af35d6d74_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="idee0869faf144f42866d7aa288175d02_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ie82c4a028e2f46f49e00eb16a6221418_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i0c590b88b1f64a2a9a73b5cdd3ac6d16_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i1381a46e2faf489e8372f8f632cfa082_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i3c40cef6156346cb9dfc20f4aa283283_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i221678b32f244027820fdddd22d493cd_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ibe3ffb6b029948b89bd038665fa57d44_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i62dee52382d14e1f9e489331c0ab3f10_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i7643f564c7844d13b40e6df62ba9ce35_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i1103780cf7bc45888c71a420256ec31e_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ieb0737a6b805496eb64c267495cdc455_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i5b9a216ba92f4662a6c5e29e4660d201_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i2b2de5dc230f469ebf57510dcb995ef8_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i70828112df2e4dc0aacf44aeade1a12c_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="id00d493640324cd0b73797ced1093269_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ic512b19e711643f59c98f75953b49777_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i5647c99c6e924e9681658be971eaeb0b_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ifc02f355b98046449ab7a198a475e208_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="iced057490ecb40f8af711b91b2a3800d_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i338d4f0ba4c9446fa367007416d30e0e_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i00b2f6ea6d574881a414d40c48f4b09f_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="if9d416b760f04d82b7305c51cd60f965_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6558c3e05bc14f9787f4c77c4cbf02da_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7b351fe8ba1143289315d78b03323c97_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</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="i62e8d30d767641039a22982dd9da4de2_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</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="ib57a8227187a4016b87def7464807008_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i8f14ec41ce5b42bdb7290c9b661e7b40_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i0e63d4cd16584e67be8964684fea4f2b_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i99e1660b325840b39b58d880b4cb6c3a_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="iae919b947c1f4fd8a9545cb83d022877_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ibf694ca5c1784abd900378a9d5cac4c9_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i1b11ec9c87f647eda542f47bd568cae6_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i94330ed0d9cb44ad89b11f0416a40439_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</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="i2fc9c021dca34b31add79cf37c24ff19_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</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="ib9005996b5004e2ea8204ab8956288bf_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i818127b04e1e47dbad6b509284dc66e3_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ib4e76b7a0138479ebec9c577d687f1b3_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i11ca9800e83c4a9fac73cab090bae62c_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">srt:SubsidiariesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:BrazilChinaAndUnitedKingdomMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i7ad4ad7c154840f4bae9ab60b925baa2_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i4884a1eea7384d1598cb80136c65edb1_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i83e79e5ca7b146d28600c379569850f6_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ic399c58a2c1a45bd84aaa9618f98d9e8_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i0bf6d605c909425e9b0bbeda75e84492_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="if54b7cb1441945f288166b95742d4e04_D20210704-20211002">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <startDate>2021-07-04</startDate>
            <endDate>2021-10-02</endDate>
        </period>
    </context>
    <context id="ic38a86a38cbb476798e3dd19d71ee36d_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CashMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ic6740d270bd44d0183c169758c4ea62d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CashMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i0f4b83625a934f8ca3fe1b1ca19c4b55_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i673cc06359884f75af7187294e97424c_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ied4eb127f8c34de9ab8ee8c6d45c70d5_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i664d2390333c48adb557984dce1aa6e2_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i9c5831145c9248d6abebe6d6cef1287a_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i09a1c858595a4a30a3c15e60909e366e_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7e64a1001c8149bcaa2a5d6d9cb3384f_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i535c7a70b8a942c79affe1727d7ae52b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iae1efd6e91be43c984f2ec4c782de70d_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i3333828445aa4fb99c0ed582b56ad206_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ic16ba641b2084da4b404a37dcb45e256_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i5b99835257004211b4a068dd960dc899_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i820b02ffde9349fb97eb0f64a6f6c7e9_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i949c87eb081c4441b7e851734c228f84_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6d7b2ffce6be4b6fa0bb526a979535d0_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i0a565c8b23bc4d09a1f297fb9bed6d2e_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i744cd44f39884a5a9e7c494e807de46d_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i4793b5e7b36744d0b452f2f9832d9099_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ibcead81fc3df41b3a1cf1e698b490bdc_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i48c13f271a7048a49e9f93bc547075a0_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesAndCashEquivalentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i83fd5d90fe6b4285bab023841c3a14b0_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesAndCashEquivalentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i86f4de24126640ba8b71657febb828f0_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="icd24b2de72464d3ba30d3ad07a4e56cd_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i2c3a8629b4304f7eb5ca0f3daa147a20_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ic3ce6d215fd045b89989818cac3c19c7_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">calx:ShortTermMarketableSecuritiesAndCashEquivalentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ib4730c11d033405ab26535a7d5d1902a_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i4e5e68f096524db3a6c5289a50bd1e54_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i0ab466283f8f4102886a538b89828f49_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i68862cb4af34489a821a714a84d59703_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="iec2cc538fb224ec88a4f3b699672a078_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i056a524a4298478b90de1f1a23ee2241_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i67913f8a27bc47f1be4f5522a875439a_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="id840696585cf4c0d85ed3042e75c8d4f_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="iebc70d6cc46241e39e116d70f0745b5e_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ic8e53431a0164b19b6fd5952ecd4356d_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i20829567e15d4e138a070a1d2bd1f296_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i952170666232494785ca17ec4b0f402f_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="iedb70c0486cf430c999ecb779842f9b7_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i03feb03d4b1948faa67282c5f94b8b9f_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="iec5c97ff467a498191966be3f6fe21e2_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i845d08c05ade4329a7d34e722a2a29ee_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="icbb5af7610094c1ea043d7757229aea7_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i57af706ebf9c4dcfbc3ae9b3887ece24_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ia446f035a91b4e8cbc5dfb2943bf38cc_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i04a13de45df2495e910c5650860ee7ae_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ibcbd3e4469a449f7b3a0e404714fbb82_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i92547be2d4ec4c2fbe99b417670a0c1b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ie5b3737f696b45309b05ec8486ef71e8_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iffabf941f6c24db2bf8711334e47cbaf_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i17b34b27f19945deb8a3001fdb72bef4_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i3b2a3664f2194292821239b94d9d12d5_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i2e365a49d2204d5eb34750b7781343b9_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="if31b6a989a394506af109a221346eb6d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i17abd99a86944a3faf931f3eee82c2c4_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i3ebca95019264ed79a51ec6974672638_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="if01ab496558d41afab2522673093c772_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ifac485b7e7d44598b822d573869dfc8f_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i682285ed68dc42ae833aa59cfbd46465_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ifa934a3e48ab4d279f8356602465981e_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib755630aec6046029d3ebd796781b082_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i1e4012789050403a8f1ba4ae649dc645_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib9efcd417c244b0da39cf058581c135d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id5bc9fe6b44f485ea9b213709ae25a11_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i189b4703619e4017b1fab65dbc717051_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalNotesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i73bf3f7d4a2e494896bee43a0d38e4ca_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id818e7cab6a34ee78d221eeb25506d00_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ic5caa568a0ce4d57a7e0f3c3a88488d8_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ieb051ab610094bc982d7f8bddacb801c_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib92f3ac53aca49de92990fdea96d45fa_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i8eef97f8547d428085e80cc1cc4f16ce_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="iebe8abb865a348c58ba05736022e6e1f_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i9d905ccbbb3241a997324600f7a5cfc2_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="if617aab8c27e4dc6aab4a0a32d272ca3_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i5782a4e7e94146cbac209e543c2116a3_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="iad5ba5a8071f469bbd153fbec01071bb_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i915095b41f604af89d5f5c1c0b516f64_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i0f99024590684757bf76146dac6621f8_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i87fd0a9a32974808b514ae0e6b4977f2_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i92749530cfc04658b8e87d80c4434870_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ie99c59fbe14a4befb7f451e29f097c4f_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i4827582f665d4174a35e6ed4f0286360_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">calx:SECSchedule1209ReserveProductReturnsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="iebb784ec1d1048e4b3adf4de3e50ed56_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ib3e6d85676a149d5b92fe67b4dd2f810_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ic272514a784a4bfb9f74d54bf7e6b2d4_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i9c61681ac2dd40a199c97e498d4424b3_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="icb4228678bd94611ba039b6b832a6910_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">calx:SoftwareMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="iec140b402bfd43a8810ed0d254278f7f_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">calx:SoftwareMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6ae01a9fed3143c39a5d8900e11ab1dc_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="id764aa16db854d7088bcc29cffc1ecd4_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6ad0d0e543464e82a0d0f6c87834547c_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i1ab5679f664a4a9483a2e951b60376c2_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ifec7805f58bf4e1eb494b1fd74099264_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i64cf409db5e74b9e888f27feb92d3f31_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i29707179eee34196994e77484ecb2b78_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ia8bc5723e8d94237a0acf104c58672c9_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringPlanAxis">calx:AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ief29060d1533404bb2cd809c20ef7077_D20211003-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:SanJoseCaliforniaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-10-03</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ia1b2dc7d18c14276b64719107b47aec1_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:SanJoseCaliforniaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="id212028f7d3447bc991b7b183b10250a_I20211130">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2021-11-30</instant>
        </period>
    </context>
    <context id="i7fadbf2c253d413a88bde1b78e167eca_D20200801-20200831">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsidiarySaleOfStockAxis">calx:PublicStockOfferingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-08-01</startDate>
            <endDate>2020-08-31</endDate>
        </period>
    </context>
    <context id="ia82b2d49648943eaa5310ec5fb3becca_I20200831">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsidiarySaleOfStockAxis">calx:PublicStockOfferingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-08-31</instant>
        </period>
    </context>
    <context id="i91bded7562bb4301ad3b554b40d54850_D20200801-20200831">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsidiarySaleOfStockAxis">us-gaap:OverAllotmentOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-08-01</startDate>
            <endDate>2020-08-31</endDate>
        </period>
    </context>
    <context id="i505f47a2e1ed4f3195b453dfbe6a64f4_D20220701-20220731">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <startDate>2022-07-01</startDate>
            <endDate>2022-07-31</endDate>
        </period>
    </context>
    <context id="idc3cb693fe5140938ac10dd90b12e4b3_I20220731">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
        </entity>
        <period>
            <instant>2022-07-31</instant>
        </period>
    </context>
    <context id="i3cbfffa9694a42a389d948ddc37f1e20_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2019EquityIncentiveAwardPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i41eb5021bb2b41b5b265a980031bec90_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2019EquityIncentiveAwardPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i8c139b1f6d274d5e8a525134045a6df8_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2019EquityIncentiveAwardPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i75d90d403aa54a2294076893730c0ec6_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2019EquityIncentiveAwardPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-02-01</startDate>
            <endDate>2021-02-28</endDate>
        </period>
    </context>
    <context id="ifc83d7d9ef314c2da18ad45d02064e43_I20220228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-02-28</instant>
        </period>
    </context>
    <context id="i965de145a5b34dcd8fa276603435fdac_D20210201-20210228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-02-01</startDate>
            <endDate>2021-02-28</endDate>
        </period>
    </context>
    <context id="i700305bde84145bb849464dd58867c37_D20210201-20210228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-02-01</startDate>
            <endDate>2021-02-28</endDate>
        </period>
    </context>
    <context id="i638345f07d274c7894c3feb7fb3b1042_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i541d20d065cc4fd69f959b3cae672349_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ida3289d8c97f4feda1965fdc60834811_D20220201-20220228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-02-01</startDate>
            <endDate>2022-02-28</endDate>
        </period>
    </context>
    <context id="i295a35bf54c94432a53d75c53f7fd8cb_I20230228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-02-28</instant>
        </period>
    </context>
    <context id="if0e6bad883de4fcf86c4c0bdd31069fb_D20230201-20230228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-02-28</endDate>
        </period>
    </context>
    <context id="iec5297cc8cee403da61498dad383a323_D20230201-20230228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-02-28</endDate>
        </period>
    </context>
    <context id="ic11cc38580b54c38bdedf1d2424db347_D20230201-20230228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-02-28</endDate>
        </period>
    </context>
    <context id="if3854c3da7554041bf128b38014a78ec_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:ExecutiveOfficerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">calx:PerformanceBasedStockOptionsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2021PerformanceTargetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="iee534fe4989d4adfa556c7ec64860bfa_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i880c5d0fdabc49049e2803cb35fd9265_D20190501-20190531">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-05-01</startDate>
            <endDate>2019-05-31</endDate>
        </period>
    </context>
    <context id="i0ec7c77a75e44d88b5272edccf8226e0_I20190430">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-04-30</instant>
        </period>
    </context>
    <context id="if0e209b492c749879687a6547794124c_I20190531">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-05-31</instant>
        </period>
    </context>
    <context id="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i5b465428849c4e708a3b9d04506880c1_D20200501-20200531">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-05-01</startDate>
            <endDate>2020-05-31</endDate>
        </period>
    </context>
    <context id="i26ca0d92b2424298b0bcea3c569b00ba_I20200531">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-05-31</instant>
        </period>
    </context>
    <context id="i58c539110982492a8e0b62fd8b455319_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueProductsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="if4be25f0af9f4b0ea5f22877ddbfebd7_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueProductsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i72cf599545d14ebc9ce8787ba50c5aa0_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueProductsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="idaed2f6c8c27442a8b45142b76ced351_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i4106eb5f32cc4149875537163855706f_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ic93cf0acaeed4e3b979094ca720d677c_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">calx:CostOfRevenueServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i7662d716785e4f228c33abfdf3c8f4b3_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i551b31ab695c495abc571c977cc81179_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib672ba4f581b4efb88684284d82eeeee_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i077d8297ff7e49b0bbfd5fe52a5f1bf7_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ic6675333d4254a57862012c889ba560e_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i3a828b5e5a764680970a3d824b40aca7_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i44b5a1d07f9948e1b8ee67a159f31b98_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="id9c1cab1298a4f73ab040395f2f7faa1_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ic8e79da6e7d2470fa750cd2afb19e759_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ia769a333e78142368aad724844d01ad9_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="id42b2b8786cd441ab4f99814e4e629c3_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i42bec794c13c4ba7acb3467565058cfc_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7c7d626e2ca643048ffb47a60d526ee3_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2017NonqualifiedEmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i67e02cfc4d874cff8afe2659b8d50558_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ia0851320733849cd9c11d5811d229fc8_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ic1895f9b31ae4e18a52aedee0737e67e_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i6b7705e9c54642b2a6c0b775486df247_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i1c63790a858946a996ca1299276c0a06_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">calx:A2019PlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ib254f0683dd74e86af161b45013b2484_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i960b09b6825f4607b4d06a80a878fbdb_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i0735e262a99c4c5789bcfd438e2a271f_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="if64a3a711a7c4298ad36afd715aa0bb7_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ief77c956212749c98a1e47bc2259eed1_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ia6a7a2e1b59f47d885453b2b96588acc_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i12575da023634f6cb1d81df6e92df5a7_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i388a82dc33064d18880924884eb0f3c6_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ia3ff94b23a2c4e91a27bf12f2f3e6231_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ic9b55f5c1eeb41c79688d7363a1baa49_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="icd96ce43bdbe4439a3f6e14fdc5c6b75_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i7b419d352d354ed585a00db42c0dc4a8_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ifb0a61fc15ad461aae58a57e0493b921_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">calx:CaliforniaStateMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i0e5bdc2854004c18b26a2bdaaed61080_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">calx:OtherStateMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ieae5dffc94804c0fb48da0faaee7d475_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i792b178b52944936bae6b48cfc3fce7f_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i728d38d208c644f8bd1d8544c2d48f1e_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i33041b28ed9f44f5a1ea4de785d07036_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ie84a15f4241d4e8da95b19019b001ec5_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i79eefe6e67de420ab8fe4564c2d04fa1_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i5cc304bf3bd8498298acfd78ba22d90f_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:AmericasExUSMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i5ed901e4c55c42e4a419f1770435e0db_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:AmericasExUSMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="id595cb86ff10436abaf67dbd61231ec1_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:AmericasExUSMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i8b262bd7fe1a4691a8c6bae2a9787fbd_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:MiddleEastAndAfricaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i18ab8bb7900d4d298140ed4be06aba85_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:MiddleEastAndAfricaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="iff0d225298e349df93cca1c136c9fe21_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">calx:MiddleEastAndAfricaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="idb8c564de1d14caaabae034fdf7227b4_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AsiaPacificMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i43b188fea50c48b0b4b3465f99c1a9a9_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AsiaPacificMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i6e6ad924af64444b9fd8b9c73fe1fd0e_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AsiaPacificMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ia7372260ff5944fbbd414f122dbb6a4e_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="idc76a7bbda2145469e7de41ace18e7dd_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i2449b8a5dc374d20bbd43cda851a4aec_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CN</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="id634ed9a8216446eb71023487e565cff_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CN</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i4dbf04314295476890b7ee4e02340210_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:IN</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i6c55f8ead39246eeb1b8ab7a037df871_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:IN</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i2bf837c4cb024b00b0c258f20aeaad31_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:typedMember dimension="us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis">
                    <us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain>2023-01-01</us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain>
                </xbrldi:typedMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i04be09c8797d413a93af8d5d08358be6_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">calx:LumenTechnologiesIncMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:RevenueFromContractWithCustomerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7932d93f74d241a2b2e0cfcec811a2f5_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">calx:OneCustomerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ida3b3cbaef8142a188dbc53f1b97daac_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001406666</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">calx:CustomerTwoMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <unit id="usd">
        <measure>iso4217:USD</measure>
    </unit>
    <unit id="shares">
        <measure>shares</measure>
    </unit>
    <unit id="usdPerShare">
        <divide>
            <unitNumerator>
                <measure>iso4217:USD</measure>
            </unitNumerator>
            <unitDenominator>
                <measure>shares</measure>
            </unitDenominator>
        </divide>
    </unit>
    <unit id="number">
        <measure>pure</measure>
    </unit>
    <unit id="period">
        <measure>calx:period</measure>
    </unit>
    <dei:EntityCentralIndexKey
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM180L2ZyYWc6YTFhZTUwMTQzODU3NDAwMTliMjA1NzZlYzhlOTQ5ZmUvdGFibGU6NzJkYzk5M2RkZWY5NDNhODgwMWRmNjQ2ZGU3MjVmMTkvdGFibGVyYW5nZTo3MmRjOTkzZGRlZjk0M2E4ODAxZGY2NDZkZTcyNWYxOV8yLTEtMS0xLTM2MTk4_5d1b3ab6-fa7e-4107-a834-2562c9a64c07">0001406666</dei:EntityCentralIndexKey>
    <dei:AmendmentFlag
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM180L2ZyYWc6YTFhZTUwMTQzODU3NDAwMTliMjA1NzZlYzhlOTQ5ZmUvdGFibGU6NzJkYzk5M2RkZWY5NDNhODgwMWRmNjQ2ZGU3MjVmMTkvdGFibGVyYW5nZTo3MmRjOTkzZGRlZjk0M2E4ODAxZGY2NDZkZTcyNWYxOV81LTEtMS0xLTM2MTk4_0b2d5333-7ecb-442d-b3c7-66d00ae73148">false</dei:AmendmentFlag>
    <dei:DocumentFiscalYearFocus
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM180L2ZyYWc6YTFhZTUwMTQzODU3NDAwMTliMjA1NzZlYzhlOTQ5ZmUvdGFibGU6NzJkYzk5M2RkZWY5NDNhODgwMWRmNjQ2ZGU3MjVmMTkvdGFibGVyYW5nZTo3MmRjOTkzZGRlZjk0M2E4ODAxZGY2NDZkZTcyNWYxOV82LTEtMS0xLTM2MTk4_c29cd0ad-7f80-419b-b2c9-3490312c3dab">2022</dei:DocumentFiscalYearFocus>
    <dei:DocumentFiscalPeriodFocus
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM180L2ZyYWc6YTFhZTUwMTQzODU3NDAwMTliMjA1NzZlYzhlOTQ5ZmUvdGFibGU6NzJkYzk5M2RkZWY5NDNhODgwMWRmNjQ2ZGU3MjVmMTkvdGFibGVyYW5nZTo3MmRjOTkzZGRlZjk0M2E4ODAxZGY2NDZkZTcyNWYxOV83LTEtMS0xLTM2MTk4_798ce26f-976e-49ef-96d4-39019d3255f9">FY</dei:DocumentFiscalPeriodFocus>
    <calx:ProductWarrantyPeriod
      contextRef="i818127b04e1e47dbad6b509284dc66e3_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1NQ_52e60d60-98c1-49fa-aeb6-aa5951b471ac">P1Y</calx:ProductWarrantyPeriod>
    <calx:ProductWarrantyPeriod
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1OQ_d86fb7cc-3137-407d-b8ce-6c28a7e598e4">P3Y</calx:ProductWarrantyPeriod>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i4884a1eea7384d1598cb80136c65edb1_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4MDI_2e01504e-91d5-45fd-890f-25b987875d7a">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_027d6b6d-617d-484f-9ecf-b96b9b28d960">http://fasb.org/us-gaap/2022#AccruedLiabilitiesCurrent</us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList>
    <us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_50fa3eb5-1337-42a0-a46b-a7c0ec1f6782">http://fasb.org/us-gaap/2022#AccruedLiabilitiesCurrent</us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList>
    <us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzAtMC0xLTEtMzYxOTg_0eaed16b-5a85-4f40-8558-3b742d67e1cb">http://fasb.org/us-gaap/2022#AccruedLiabilitiesCurrent</us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList>
    <dei:DocumentType
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18zMjM5_48ba884b-1687-495f-9555-9bd3385ffeca">10-K</dei:DocumentType>
    <dei:DocumentAnnualReport
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6MWRiNGExMzc1MzBjNGM1YjhmODgwYzg5ODdiMWFiYjEvdGFibGVyYW5nZToxZGI0YTEzNzUzMGM0YzViOGY4ODBjODk4N2IxYWJiMV8wLTAtMS0xLTM2MTk4_ff33451e-def2-4aa2-be0d-475843420736">true</dei:DocumentAnnualReport>
    <dei:DocumentPeriodEndDate
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18xMjg_7ca0f519-4d33-4681-95d8-5e8547834be5">2022-12-31</dei:DocumentPeriodEndDate>
    <dei:CurrentFiscalYearEndDate
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18xMjg_7ad4795e-bf2d-4901-9ef4-3aa739f846a0">--12-31</dei:CurrentFiscalYearEndDate>
    <dei:DocumentTransitionReport
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6MzUzNDk4ZmQ4NDA3NDVjNWE4YmYzODM4NzNlYWZmZWMvdGFibGVyYW5nZTozNTM0OThmZDg0MDc0NWM1YThiZjM4Mzg3M2VhZmZlY18wLTAtMS0xLTM2MTk4_8e06559f-efc4-423f-9bb9-c616f2dc4d71">false</dei:DocumentTransitionReport>
    <dei:EntityFileNumber
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18yMjA_ebb69123-5ee3-41f7-9810-5963db2a99dc">001-34674</dei:EntityFileNumber>
    <dei:EntityRegistrantName
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18zMjQw_061c12bd-f894-49af-a7ff-2c7b757715d8">Calix, Inc.</dei:EntityRegistrantName>
    <dei:EntityIncorporationStateCountryCode
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8wLTAtMS0xLTM2MTk4_92fcc760-b221-4a20-b3f3-62bc443bc774">DE</dei:EntityIncorporationStateCountryCode>
    <dei:EntityTaxIdentificationNumber
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8wLTItMS0xLTM2MTk4_e1107cd3-e2eb-4ed7-84d2-d31c9b4bcdbf">68-0438710</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8zLTAtMS0xLTM2MTk4L3RleHRyZWdpb246NzZhNjQyZWY0ZGM3NDA3NzgwN2FkMmE5MjZjNjYxNzZfNA_8a9e72ff-4461-4fbf-8315-981fc8f0272d">2777 Orchard Parkway</dei:EntityAddressAddressLine1>
    <dei:EntityAddressCityOrTown
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8zLTAtMS0xLTM2MTk4L3RleHRyZWdpb246NzZhNjQyZWY0ZGM3NDA3NzgwN2FkMmE5MjZjNjYxNzZfNw_fa95cd3a-2a35-48c8-a09e-dcf62a6bcb0f">San Jose</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8zLTAtMS0xLTM2MTk4L3RleHRyZWdpb246NzZhNjQyZWY0ZGM3NDA3NzgwN2FkMmE5MjZjNjYxNzZfMTE_e121cceb-d46f-4bc1-bf9f-fef303c97e03">CA</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF8zLTItMS0xLTM2MTk4L3RleHRyZWdpb246M2E5NGVkYjEwNTUwNDhkYTg5OThmZmVlNWViMTIwYmJfNA_aec57d98-d52c-49fc-8411-875154178d15">95134</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF80LTAtMS0xLTM2MTk4L3RleHRyZWdpb246MzgyZDBhYjdlMzlhNDJiMWIxYzVkZDQ3ODQzMDZkNTVfNTY_9994208c-c7ef-4913-adbc-afa7decebaa3">408</dei:CityAreaCode>
    <dei:LocalPhoneNumber
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF80LTAtMS0xLTM2MTk4L3RleHRyZWdpb246MzgyZDBhYjdlMzlhNDJiMWIxYzVkZDQ3ODQzMDZkNTVfNjA_0df80c00-27b3-48be-b13d-bf376e411aca">514-3000</dei:LocalPhoneNumber>
    <dei:Security12bTitle
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF83LTAtMS0xLTM2MTk4_6238221b-6641-4888-8a00-a90509ee8df2">Common Stock, $0.025 par value</dei:Security12bTitle>
    <dei:TradingSymbol
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF83LTEtMS0xLTM2MTk4_9d49b0bc-fae4-44d5-be35-41b68b2624fa">CALX</dei:TradingSymbol>
    <dei:SecurityExchangeName
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6Y2FjNjFhMmM3NTg3NDFkYzkzN2JkYTdmMjJjZWEwMmQvdGFibGVyYW5nZTpjYWM2MWEyYzc1ODc0MWRjOTM3YmRhN2YyMmNlYTAyZF83LTItMS0xLTM2MTk4_ad58b464-b4a2-4fd4-9883-f98b20598249">NYSE</dei:SecurityExchangeName>
    <dei:EntityWellKnownSeasonedIssuer
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M180MzE_ecb1e392-6aa0-42ee-b4fa-e80d19686566">No</dei:EntityWellKnownSeasonedIssuer>
    <dei:EntityVoluntaryFilers
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M181NzY_0610156e-1fe7-4f5c-852d-eadddba195c0">No</dei:EntityVoluntaryFilers>
    <dei:EntityCurrentReportingStatus
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M185MzE_9be853e6-9f5e-43fe-8c49-9ee386e2a3e1">Yes</dei:EntityCurrentReportingStatus>
    <dei:EntityInteractiveDataCurrent
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18xMjYw_a6230488-bde6-484b-9f4e-1ca8701eaeca">Yes</dei:EntityInteractiveDataCurrent>
    <dei:EntityFilerCategory
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6MzhmNWNhZGQ3OGVmNDQzM2I0NjQzNjUyZGFmZTQxZjEvdGFibGVyYW5nZTozOGY1Y2FkZDc4ZWY0NDMzYjQ2NDM2NTJkYWZlNDFmMV8wLTAtMS0xLTM2MTk4_984c1a77-4cbf-4114-9eeb-1c5e4297ccc6">Large Accelerated Filer</dei:EntityFilerCategory>
    <dei:EntitySmallBusiness
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6MzhmNWNhZGQ3OGVmNDQzM2I0NjQzNjUyZGFmZTQxZjEvdGFibGVyYW5nZTozOGY1Y2FkZDc4ZWY0NDMzYjQ2NDM2NTJkYWZlNDFmMV8yLTctMS0xLTM2MTk4_2f213f54-5731-4671-8ee0-13624754792a">false</dei:EntitySmallBusiness>
    <dei:EntityEmergingGrowthCompany
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGFibGU6MzhmNWNhZGQ3OGVmNDQzM2I0NjQzNjUyZGFmZTQxZjEvdGFibGVyYW5nZTozOGY1Y2FkZDc4ZWY0NDMzYjQ2NDM2NTJkYWZlNDFmMV80LTItMS0xLTM2MTk4_cd208603-c0f8-45be-97cc-d40ca928108e">false</dei:EntityEmergingGrowthCompany>
    <dei:IcfrAuditorAttestationFlag
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18zMjQx_5c55ced4-5cc5-47a5-a965-24cee41b5618">true</dei:IcfrAuditorAttestationFlag>
    <dei:EntityShellCompany
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18yMzQ2_390c594d-26be-4d3c-ad80-5d283ea52441">false</dei:EntityShellCompany>
    <dei:EntityPublicFloat
      contextRef="ia8228bdbbce54d7c9624a78d5d2b980e_I20220701"
      decimals="-6"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18yNjI1_9af110ec-80dd-4ae3-b513-5f638ba599e1"
      unitRef="usd">2002000000</dei:EntityPublicFloat>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="ieb250817b6e542ed8d81042a73b3771f_I20230210"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18zMDIz_c3a0af2f-8586-4c1d-bbc5-c58e86c3b415"
      unitRef="shares">66139488</dei:EntityCommonStockSharesOutstanding>
    <dei:DocumentsIncorporatedByReferenceTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xL2ZyYWc6MWJjMmYyODJiMzAzNGFiOThiN2VmZGY0MGYwYzc5OTMvdGV4dHJlZ2lvbjoxYmMyZjI4MmIzMDM0YWI5OGI3ZWZkZjQwZjBjNzk5M18zMjM3_da8d6458-1343-40a5-8e82-5f9c51d17d78">&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:120%"&gt;DOCUMENTS INCORPORATED BY REFERENCE&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%"&gt;Portions of the registrant&#x2019;s definitive proxy statement for its 2023 annual meeting of stockholders are incorporated by reference in Items 10, 11, 12, 13 and 14 of Part&#160;III.&lt;/span&gt;&lt;/div&gt;</dei:DocumentsIncorporatedByReferenceTextBlock>
    <dei:AuditorName
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182NC9mcmFnOjc1OTMxMWI2YzAwODQ0MmRiYThkMGM0YmVkN2I3ODJmL3RleHRyZWdpb246NzU5MzExYjZjMDA4NDQyZGJhOGQwYzRiZWQ3Yjc4MmZfMTMyNjE_a2b21683-2ab8-4bad-b3ed-515442a93348">KPMG LLP</dei:AuditorName>
    <dei:AuditorLocation
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182NC9mcmFnOjc1OTMxMWI2YzAwODQ0MmRiYThkMGM0YmVkN2I3ODJmL3RleHRyZWdpb246NzU5MzExYjZjMDA4NDQyZGJhOGQwYzRiZWQ3Yjc4MmZfMTMyNjM_04b42724-9000-4985-a79f-790303d5041b">Santa Clara, California</dei:AuditorLocation>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNC0yLTEtMS0zNjE5OA_7440f237-88de-440c-a9ea-3724a9e90f70"
      unitRef="usd">79073000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNC00LTEtMS0zNjE5OA_3d75cbd4-d830-482c-bf2b-a04a6a7144d8"
      unitRef="usd">51333000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNS0yLTEtMS0zNjE5OA_e56a6463-8867-48bb-a8c8-423ee47150e8"
      unitRef="usd">162642000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNS00LTEtMS0zNjE5OA_62617aed-760a-4a41-a491-a9745188806f"
      unitRef="usd">153002000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNi0yLTEtMS0zNjE5OA_41f6692b-d263-4b27-8721-6d5848db8b21"
      unitRef="usd">93804000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNi00LTEtMS0zNjE5OA_959e0cf3-a491-4471-a012-16850797a9d4"
      unitRef="usd">85219000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:InventoryNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNy0yLTEtMS0zNjE5OA_28bb3ece-a1df-4897-9dc1-d01657870745"
      unitRef="usd">149160000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfNy00LTEtMS0zNjE5OA_8ca588ac-4dc4-4d10-a933-eadf6b85f1b6"
      unitRef="usd">88880000</us-gaap:InventoryNet>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfOC0yLTEtMS0zNjE5OA_96f306cf-6095-404e-9c09-e7087f79dc37"
      unitRef="usd">62691000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfOC00LTEtMS0zNjE5OA_bb95d12e-fffa-4453-8b26-24361e7b4555"
      unitRef="usd">30811000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfOS0yLTEtMS0zNjE5OA_4745ecf8-539c-4c85-beb0-560e2fcbc01d"
      unitRef="usd">547370000</us-gaap:AssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfOS00LTEtMS0zNjE5OA_62fdc31c-63a3-4018-8230-2143feda23ee"
      unitRef="usd">409245000</us-gaap:AssetsCurrent>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTAtMi0xLTEtMzYxOTg_b43221ed-bf9d-46a0-b3d7-d8d76d12b52c"
      unitRef="usd">25834000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTAtNC0xLTEtMzYxOTg_ba052612-41e2-4742-8215-15f89627f5dd"
      unitRef="usd">21783000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTEtMi0xLTEtMzYxOTg_e06f0df6-ec23-4558-8734-ab7cc1cead51"
      unitRef="usd">9283000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTEtNC0xLTEtMzYxOTg_cae8e0f9-1531-460e-b191-45f8624b2eb7"
      unitRef="usd">12182000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTItMi0xLTEtMzYxOTg_fd40dd87-40ee-4eea-bf66-ecbf137852e9"
      unitRef="usd">167031000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTItNC0xLTEtMzYxOTg_c2673ac9-83c3-4fe6-969b-d4eb73f02df6"
      unitRef="usd">168962000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:Goodwill
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTMtMi0xLTEtMzYxOTg_521118b7-395a-4386-b940-f7f031af52a7"
      unitRef="usd">116175000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTMtNC0xLTEtMzYxOTg_7b47b5d3-ece4-4cc9-bb5a-40d5c369a97c"
      unitRef="usd">116175000</us-gaap:Goodwill>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTQtMi0xLTEtMzYxOTg_527ab7ee-d39b-4ac3-9d36-5915e5376936"
      unitRef="usd">19142000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTQtNC0xLTEtMzYxOTg_07d7bf08-54c9-45de-801e-26e6eac23180"
      unitRef="usd">13685000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:Assets
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTUtMi0xLTEtMzYxOTg_fcd9adf2-0c8b-466d-a548-55414d493f05"
      unitRef="usd">884835000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTUtNC0xLTEtMzYxOTg_99c26f2c-dcf8-44ec-827a-614ce6a24721"
      unitRef="usd">742032000</us-gaap:Assets>
    <us-gaap:AccountsPayableCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTgtMi0xLTEtMzYxOTg_6a430fe0-ace6-4617-a771-9c46c14fbbbb"
      unitRef="usd">41407000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTgtNC0xLTEtMzYxOTg_e74069e5-8893-4b44-b9bc-398da3813660"
      unitRef="usd">29061000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTktMi0xLTEtMzYxOTg_cbca86ad-c54a-4986-94ba-473d2e2acc83"
      unitRef="usd">90474000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMTktNC0xLTEtMzYxOTg_3cdbd83c-3919-48ad-8c61-91c3078976af"
      unitRef="usd">71597000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjAtMi0xLTEtMzYxOTg_835131e4-1730-449f-89d3-6a976fad3084"
      unitRef="usd">33541000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjAtNC0xLTEtMzYxOTg_05591d57-263d-4608-91de-5a953c405d66"
      unitRef="usd">27478000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjEtMi0xLTEtMzYxOTg_53bf71aa-73ed-4c70-8d15-83c76f1b5ef2"
      unitRef="usd">165422000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjEtNC0xLTEtMzYxOTg_ce2d4376-64c4-4afd-a5c9-1723cb3821f8"
      unitRef="usd">128136000</us-gaap:LiabilitiesCurrent>
    <us-gaap:ContractWithCustomerLiabilityNoncurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjItMi0xLTEtMzYxOTg_0ef15dec-dd28-4d52-ba91-8a1c51ad2e59"
      unitRef="usd">25072000</us-gaap:ContractWithCustomerLiabilityNoncurrent>
    <us-gaap:ContractWithCustomerLiabilityNoncurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjItNC0xLTEtMzYxOTg_78e6d129-802d-41f5-8e84-3ee3bdba14fd"
      unitRef="usd">22016000</us-gaap:ContractWithCustomerLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjMtMi0xLTEtMzYxOTg_483ddae8-6530-4718-87ab-74fb2eeece25"
      unitRef="usd">8442000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjMtNC0xLTEtMzYxOTg_618a4d49-ab9e-485c-b841-da23fe704c71"
      unitRef="usd">12376000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjQtMi0xLTEtMzYxOTg_7c7eb3f6-6df0-4835-9957-1298645712bd"
      unitRef="usd">6332000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjQtNC0xLTEtMzYxOTg_837cec0f-2c29-43b4-b603-c8f939a814f7"
      unitRef="usd">11076000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:Liabilities
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjUtMi0xLTEtMzYxOTg_9692399c-f5ea-4797-b4e8-0bd0a470c67b"
      unitRef="usd">205268000</us-gaap:Liabilities>
    <us-gaap:Liabilities
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjUtNC0xLTEtMzYxOTg_83633c33-3454-48a4-b907-72da18c797f2"
      unitRef="usd">173604000</us-gaap:Liabilities>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjYtMi0xLTEtMzYxOTg_2dd7d4d3-4101-45e0-8613-06a86092ba5a"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjYtNC0xLTEtMzYxOTg_e9de35e6-8355-4e33-89b7-4ebbfea73a78"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl8yMQ_620381eb-588d-43fc-a0d6-b37927b09e67"
      unitRef="usdPerShare">0.025</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl8yMQ_a6d4dc5e-7f90-4913-968a-6807d4b3361b"
      unitRef="usdPerShare">0.025</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl8zNQ_a41d7077-3872-4311-b6db-2cb7b1959931"
      unitRef="shares">5000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl8zNQ_be6ae076-d8d3-4ccf-9fcb-f376c3f37131"
      unitRef="shares">5000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl81Nw_2e89c7dd-7479-46cf-bacd-53b34b28f830"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl81Nw_44134196-220e-4e7f-adc5-32c791377611"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl81Nw_8125353f-1c57-4ac6-a8c9-739c11c3e91f"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjo0ZjdmYWVlYjQxYjE0MzVlOTVlYjZlYThiNTkzYzViZl81Nw_b5acc682-1add-4af0-a2b3-a6fd8860275b"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockValue
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtMi0xLTEtMzYxOTg_a69c5684-2c8f-4c7d-aed5-4b5edb207265"
      unitRef="usd">0</us-gaap:PreferredStockValue>
    <us-gaap:PreferredStockValue
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjgtNC0xLTEtMzYxOTg_5542edad-b917-4e83-ac7b-fcc699deeeb8"
      unitRef="usd">0</us-gaap:PreferredStockValue>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18xOA_11e16421-afd7-4b06-b70f-57ff48a1f1ae"
      unitRef="usdPerShare">0.025</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18xOA_4d5d248f-2775-4ff9-9d01-3f3af20977b1"
      unitRef="usdPerShare">0.025</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18zMg_5b5be5f5-2b16-405f-a286-b84c10594c9c"
      unitRef="shares">100000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18zMg_6d70a73d-2dc4-418b-b424-b4365a6afd09"
      unitRef="shares">100000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M181NA_32636c17-0642-4940-beed-cfd20add5fa4"
      unitRef="shares">65735000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesIssued
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M181NA_a4a3173b-523d-4dce-a875-a9eb661cf641"
      unitRef="shares">65735000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18xMTY_560bdaf8-6020-4665-98a1-c9a77df73648"
      unitRef="shares">64274000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesIssued
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMC0xLTEtMzYxOTgvdGV4dHJlZ2lvbjphMmYzZGY0NGJkNmQ0Y2UzYTk2Nzg4YTRhNDZmNmM0M18xMTY_80890246-b111-4424-9b24-58be070d44b5"
      unitRef="shares">64274000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockValue
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktMi0xLTEtMzYxOTg_d0486d05-784b-4180-b65b-9c93126cbbd0"
      unitRef="usd">1644000</us-gaap:CommonStockValue>
    <us-gaap:CommonStockValue
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMjktNC0xLTEtMzYxOTg_afaf9f37-3149-43ae-8228-a7782171e367"
      unitRef="usd">1607000</us-gaap:CommonStockValue>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzAtMi0xLTEtMzYxOTg_68fc6531-9e87-496e-a876-4504390e82ea"
      unitRef="usd">1070100000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzAtNC0xLTEtMzYxOTg_32ab1619-710f-4dc8-8bea-7501dbae63fe"
      unitRef="usd">997855000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzEtMi0xLTEtMzYxOTg_41d2411e-271f-442a-974e-3fcb39acb9b8"
      unitRef="usd">-2473000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzEtNC0xLTEtMzYxOTg_24496e97-c374-4e39-99aa-15356e55d78a"
      unitRef="usd">-320000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzItMi0xLTEtMzYxOTg_a6462414-9a06-4c46-b2a9-a6e6a28decf7"
      unitRef="usd">-389704000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzItNC0xLTEtMzYxOTg_5cd51b84-5d3c-46a5-9612-e43c0561d4d9"
      unitRef="usd">-430714000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:StockholdersEquity
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzMtMi0xLTEtMzYxOTg_cf79c888-0231-47d8-89e6-a113e8c1da4c"
      unitRef="usd">679567000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzMtNC0xLTEtMzYxOTg_afd3a1bf-6dcf-436c-9e03-9f50579adb73"
      unitRef="usd">568428000</us-gaap:StockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzQtMi0xLTEtMzYxOTg_09568e2c-d601-49b2-9836-71d444c21e0f"
      unitRef="usd">884835000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM182Ny9mcmFnOmMwMGM4MjI0YWQ1ZTRkNWU5YjVkMTFjMWE0OTQ2YTMzL3RhYmxlOmQxZmFhMTEyMzFhYjRlNTNhNzE0MzAxMmNjZTBhMmMyL3RhYmxlcmFuZ2U6ZDFmYWExMTIzMWFiNGU1M2E3MTQzMDEyY2NlMGEyYzJfMzQtNC0xLTEtMzYxOTg_392bff09-1284-46cd-8bd4-18fc8ac1c125"
      unitRef="usd">742032000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMy0yLTEtMS0zODI0NQ_c9cff09c-8936-418b-9198-c7cd48519cc6"
      unitRef="usd">867827000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMy00LTEtMS0zODI0NQ_8ebcc7d8-3379-44cd-b97b-f08e9d5aa35f"
      unitRef="usd">679394000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMy02LTEtMS0zODI0NQ_390687d6-27df-4ed8-b028-9a0ad431cd22"
      unitRef="usd">541239000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNC0yLTEtMS0zODI0NQ_9c44dc58-5855-4dd3-b17d-8703f54c7741"
      unitRef="usd">432399000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNC00LTEtMS0zODI0NQ_c794b154-f759-4f4f-9eb7-76e9f07c5540"
      unitRef="usd">322807000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNC02LTEtMS0zODI0NQ_ab64cbd7-2ac0-430b-a343-2f05fc713981"
      unitRef="usd">274220000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:GrossProfit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTAtMi0xLTEtMzYxOTg_e9c9c353-3084-4f21-a783-541db9f43c38"
      unitRef="usd">435428000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTAtNC0xLTEtMzYxOTg_c74054e7-3ed5-4537-9e3c-b76b8437200b"
      unitRef="usd">356587000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTAtNi0xLTEtMzYxOTg_584ba3c6-5976-43d4-a4cf-f32634535f03"
      unitRef="usd">267019000</us-gaap:GrossProfit>
    <us-gaap:SellingAndMarketingExpense
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTItMi0xLTEtMzYxOTg_982739fe-cd81-436d-9951-ff18162d87e8"
      unitRef="usd">174549000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTItNC0xLTEtMzYxOTg_2b6ab719-79c4-4b20-8855-cd835dee8422"
      unitRef="usd">125909000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTItNi0xLTEtMzYxOTg_9a53e5f1-81b2-45a0-8a9f-af04d80bcfc2"
      unitRef="usd">94185000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTMtMi0xLTEtMzYxOTg_74816185-bf53-4e95-a27b-bfa02979a77b"
      unitRef="usd">131994000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTMtNC0xLTEtMzYxOTg_5d5c4485-4d4c-4cb4-8b5a-273da864b324"
      unitRef="usd">101747000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTMtNi0xLTEtMzYxOTg_1822deab-6483-4a52-8256-1735d4baf389"
      unitRef="usd">85258000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTQtMi0xLTEtMzYxOTg_2514435c-263e-4611-918a-1e463efd0598"
      unitRef="usd">76275000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTQtNC0xLTEtMzYxOTg_13033071-fc6a-48a5-9592-00abbf1bc9cb"
      unitRef="usd">55779000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTQtNi0xLTEtMzYxOTg_1de5b320-9562-4dc8-b5b2-41b73cbe2336"
      unitRef="usd">44444000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:RestructuringCharges
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTUtMi0xLTEtMzYxOTg_a01e0a02-a48b-4713-bee4-9994e90bc84b"
      unitRef="usd">0</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTUtNC0xLTEtMzYxOTg_a90e7190-a291-4138-99bf-a6311324b475"
      unitRef="usd">-786000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTUtNi0xLTEtMzYxOTg_b93650b4-e4f2-4da8-a4d7-13d736e1c55e"
      unitRef="usd">6286000</us-gaap:RestructuringCharges>
    <us-gaap:OperatingExpenses
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTctMi0xLTEtMzYxOTg_da204b5d-ffad-4681-9dc3-2f8abdfcf9e3"
      unitRef="usd">382818000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTctNC0xLTEtMzYxOTg_31fc03e3-e301-4bdd-ad7d-251f49af4337"
      unitRef="usd">282649000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTctNi0xLTEtMzYxOTg_044e8b46-5e23-4eab-ab49-22706a2e1c73"
      unitRef="usd">230173000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingIncomeLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTgtMi0xLTEtMzYxOTg_bcd996a2-481f-45ab-b513-26ab6b8bb1b7"
      unitRef="usd">52610000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTgtNC0xLTEtMzYxOTg_46f17830-e76f-4600-93b0-d93617b64c4c"
      unitRef="usd">73938000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMTgtNi0xLTEtMzYxOTg_bd7582d9-5288-4c0d-b903-c792d380b064"
      unitRef="usd">36846000</us-gaap:OperatingIncomeLoss>
    <us-gaap:InvestmentIncomeNet
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjAtMi0xLTEtMzYxOTg_7cc2a909-f400-48c4-a37b-082fc1c8fc6d"
      unitRef="usd">2009000</us-gaap:InvestmentIncomeNet>
    <us-gaap:InvestmentIncomeNet
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjAtNC0xLTEtMzYxOTg_34d14db9-0cc8-4bb6-aa65-35bbc4b01e4b"
      unitRef="usd">-402000</us-gaap:InvestmentIncomeNet>
    <us-gaap:InvestmentIncomeNet
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjAtNi0xLTEtMzYxOTg_d54e188d-e925-43e6-8430-e705d078473b"
      unitRef="usd">-1585000</us-gaap:InvestmentIncomeNet>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjEtMi0xLTEtMzYxOTg_45632e1c-018f-4cd0-9fb0-eda81c3560bf"
      unitRef="usd">-577000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjEtNC0xLTEtMzYxOTg_5b0fb259-805e-4f2f-94d8-903de07d5414"
      unitRef="usd">-882000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjEtNi0xLTEtMzYxOTg_93032e7d-0c9e-4a9c-b544-c413d85b3bee"
      unitRef="usd">-977000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjItMi0xLTEtMzYxOTg_90a6e578-9fa9-4c95-9169-d9234d99ead3"
      unitRef="usd">1432000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjItNC0xLTEtMzYxOTg_5b4c570f-69fa-46ec-89b9-d3ad296b909e"
      unitRef="usd">-1284000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjItNi0xLTEtMzYxOTg_9adfb2a7-8b5f-4adf-bf92-4c02ae206241"
      unitRef="usd">-2562000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjMtMi0xLTEtMzYxOTg_24b907fb-5c4b-41af-9aa2-799f87827643"
      unitRef="usd">54042000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjMtNC0xLTEtMzYxOTg_ec69310c-068b-447d-aa8f-ad3df8c01959"
      unitRef="usd">72654000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjMtNi0xLTEtMzYxOTg_bdca91b5-ae2e-4bbc-9228-6887a95fe619"
      unitRef="usd">34284000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjQtMi0xLTEtMzYxOTg_8f0933e1-96cc-4e41-9c2f-b001fac7d6b2"
      unitRef="usd">13032000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjQtNC0xLTEtMzYxOTg_bc9cd1f1-27bb-44bb-81e4-1370b7989cd4"
      unitRef="usd">-165724000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjQtNi0xLTEtMzYxOTg_e89c58e1-0fad-4ae2-b1cb-56d266426251"
      unitRef="usd">800000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjUtMi0xLTEtMzYxOTg_430e13eb-a128-4513-a53e-d2cb324cfb2c"
      unitRef="usd">41010000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjUtNC0xLTEtMzYxOTg_d0ed98ee-b148-4ade-b58a-23c5d2c1dc4e"
      unitRef="usd">238378000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjUtNi0xLTEtMzYxOTg_cf03a29d-9388-4983-ae23-0625edeb4c49"
      unitRef="usd">33484000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjctMi0xLTEtMzYxOTg_f71cece1-69c7-4c40-aa3c-4838f8e946c4"
      unitRef="usdPerShare">0.63</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjctNC0xLTEtMzYxOTg_2d809c8f-ed2a-47e8-bdff-d2d45f28b0cc"
      unitRef="usdPerShare">3.77</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjctNi0xLTEtMzYxOTg_93e53e05-42ba-4d1f-8f03-d1f74ecc6916"
      unitRef="usdPerShare">0.57</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjgtMi0xLTEtMzYxOTg_ad37b260-5315-4208-8c1d-d4f18d20f4b7"
      unitRef="usdPerShare">0.60</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjgtNC0xLTEtMzYxOTg_5bff29d7-d33e-48bc-8f5b-00cda3e22110"
      unitRef="usdPerShare">3.51</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMjgtNi0xLTEtMzYxOTg_93dd695e-5e37-4d9e-abd1-91660ae8d9d1"
      unitRef="usdPerShare">0.54</us-gaap:EarningsPerShareDiluted>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzAtMi0xLTEtMzYxOTg_c883f4cd-d316-4667-a423-d97948538d41"
      unitRef="shares">65058000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzAtNC0xLTEtMzYxOTg_96eb1476-d398-4248-a651-1c52088df4ca"
      unitRef="shares">63277000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzAtNi0xLTEtMzYxOTg_ce6ac25b-d28a-4bd9-bcbb-78a14c5c30af"
      unitRef="shares">59074000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzEtMi0xLTEtMzYxOTg_15ec62e3-4f93-465e-b41e-a772f07f67df"
      unitRef="shares">68911000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzEtNC0xLTEtMzYxOTg_1340c32d-350e-4a05-9678-4c622b460785"
      unitRef="shares">67856000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzEtNi0xLTEtMzYxOTg_b522f9b8-1e02-4f70-8bbc-65dc193f10f0"
      unitRef="shares">61998000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:NetIncomeLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzMtMi0xLTEtMzYxOTg_b7d71868-4ec5-432f-bd8b-9d931b09517c"
      unitRef="usd">41010000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzMtNC0xLTEtMzYxOTg_909d3210-04eb-4545-bd7d-c7dff8f9a763"
      unitRef="usd">238378000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzMtNi0xLTEtMzYxOTg_13979068-ad92-4497-8db7-8d8cabcd63e1"
      unitRef="usd">33484000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzctMi0xLTEtMzYxOTg_ec4fa937-9375-48fd-83eb-71345795b18f"
      unitRef="usd">-1521000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzctNC0xLTEtMzYxOTg_61f32544-8d92-4e70-b4a0-f328b7b405dd"
      unitRef="usd">-179000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzctNi0xLTEtMzYxOTg_1482d684-3a7f-4da2-ba3a-303a50552a4e"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzgtMi0xLTEtMzYxOTg_cb918c74-dfd0-4926-9138-96f1102f0a5e"
      unitRef="usd">-632000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzgtNC0xLTEtMzYxOTg_4771ddc5-b8d7-424c-9ccc-9475305db6b7"
      unitRef="usd">50000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzgtNi0xLTEtMzYxOTg_52091167-b9bd-4000-8a53-05e74772c5ec"
      unitRef="usd">663000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzktMi0xLTEtMzYxOTg_318633c9-7153-4f02-820d-65676b7293c3"
      unitRef="usd">-2153000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzktNC0xLTEtMzYxOTg_d775c77b-dc54-4a27-943a-2e1c0acb82d7"
      unitRef="usd">-129000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfMzktNi0xLTEtMzYxOTg_76b9c673-30fe-4c74-9668-65a236a6c320"
      unitRef="usd">663000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNDAtMi0xLTEtMzYxOTg_c8bd61de-0833-4bc5-b505-2c354836c7d2"
      unitRef="usd">38857000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNDAtNC0xLTEtMzYxOTg_d1b37042-39c3-4d0b-a46f-71fcb6488736"
      unitRef="usd">238249000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183MC9mcmFnOjI3ODYxMjQxOTQ1NTRiMjU5MTViMWRmNzdlYjU3Mzg5L3RhYmxlOmRkODIzNWM1MjhkYzQyMmY4ODFkYzk5ZTMwOTA3NWVlL3RhYmxlcmFuZ2U6ZGQ4MjM1YzUyOGRjNDIyZjg4MWRjOTllMzA5MDc1ZWVfNDAtNi0xLTEtMzYxOTg_359fec31-295d-46dc-aa52-a2751f160771"
      unitRef="usd">34147000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="ie82c4a028e2f46f49e00eb16a6221418_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC0yLTEtMS0zNjE5OA_9c5e4c8a-68c6-4404-95df-a45dc653f43c"
      unitRef="shares">56448000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="ie82c4a028e2f46f49e00eb16a6221418_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC00LTEtMS0zNjE5OA_dbdb909a-4dc0-49d2-b9c6-b6293b0b7a2e"
      unitRef="usd">1545000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i0c590b88b1f64a2a9a73b5cdd3ac6d16_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC02LTEtMS0zNjE5OA_13ec39b5-9947-46ce-90af-4761834ece54"
      unitRef="usd">895899000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i1381a46e2faf489e8372f8f632cfa082_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC04LTEtMS0zNjE5OA_0d9c67f3-8a13-4c5e-b097-419e5b4e9ac2"
      unitRef="usd">-854000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i3c40cef6156346cb9dfc20f4aa283283_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC0xMC0xLTEtMzYxOTg_e12065e0-3973-4abb-be91-c8b3b4a813aa"
      unitRef="usd">-702576000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i221678b32f244027820fdddd22d493cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC0xMi0xLTEtMzYxOTg_15bea499-7542-43f8-a40a-08b17c454881"
      unitRef="usd">-39986000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ibe3ffb6b029948b89bd038665fa57d44_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNC0xNC0xLTEtMzYxOTg_bd44ec31-35a9-4a45-a817-ffb87af96b8a"
      unitRef="usd">154028000</us-gaap:StockholdersEquity>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i62dee52382d14e1f9e489331c0ab3f10_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNS02LTEtMS0zNjE5OA_1b6666c8-1e83-4f0f-9a2c-ea7176ce259a"
      unitRef="usd">13960000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNS0xNC0xLTEtMzYxOTg_ea8fd415-995b-4a30-804b-9105c74631cd"
      unitRef="usd">13960000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNi0yLTEtMS0zNjE5OA_4f07ea59-e3ca-4cee-9ed6-37796e8c21d9"
      unitRef="shares">2454000</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNi00LTEtMS0zNjE5OA_9f71183c-cb74-4609-9d01-6a45b52d5409"
      unitRef="usd">60000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="i62dee52382d14e1f9e489331c0ab3f10_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNi02LTEtMS0zNjE5OA_6edc14e6-413b-498b-a309-945a8a480078"
      unitRef="usd">18067000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNi0xNC0xLTEtMzYxOTg_84b1348e-2916-46b7-9232-394b025bc1f2"
      unitRef="usd">18127000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodSharesNewIssues
      contextRef="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy0yLTEtMS0zNjcxOA_1de58878-9e1d-4060-8c68-9e59b2e7e6c6"
      unitRef="shares">3220000</us-gaap:StockIssuedDuringPeriodSharesNewIssues>
    <us-gaap:StockIssuedDuringPeriodValueNewIssues
      contextRef="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy00LTEtMS0zNjcxOA_165d6276-3d15-496b-a8da-b9c9c340ef58"
      unitRef="usd">82000</us-gaap:StockIssuedDuringPeriodValueNewIssues>
    <us-gaap:StockIssuedDuringPeriodValueNewIssues
      contextRef="i62dee52382d14e1f9e489331c0ab3f10_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy02LTEtMS0zNjcxOA_e2873cf2-3184-4c6b-b519-e155406a47ad"
      unitRef="usd">59981000</us-gaap:StockIssuedDuringPeriodValueNewIssues>
    <us-gaap:StockIssuedDuringPeriodValueNewIssues
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy0xNC0xLTEtMzk2MjM_c58cea93-f79f-4b6b-95d4-eb4ccb46a5cd"
      unitRef="usd">60063000</us-gaap:StockIssuedDuringPeriodValueNewIssues>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="i2d65a910a2a941fab75505cb7423e31f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC00LTEtMS0zNjcxOA_8be1b54a-83c4-4796-ae5f-646c6f927fa2"
      unitRef="usd">134000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="i62dee52382d14e1f9e489331c0ab3f10_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC02LTEtMS0zNjcxOA_65cabe81-268f-4bf9-95d4-2980953c89fc"
      unitRef="usd">39852000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="i7643f564c7844d13b40e6df62ba9ce35_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC0xMi0xLTEtMzY3MTg_dc6bfa71-9e72-49a6-bee3-c5b207ee9fde"
      unitRef="usd">-39986000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC0xNC0xLTEtMzk2MjM_0638cf78-211d-4446-bdd1-3565d46fd14b"
      unitRef="usd">0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:NetIncomeLoss
      contextRef="i1103780cf7bc45888c71a420256ec31e_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy0xMC0xLTEtMzYxOTg_15d083cb-5501-4a06-a9ad-516a905a40ef"
      unitRef="usd">33484000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfNy0xNC0xLTEtMzYxOTg_c005327b-c3b5-40aa-84fb-095422cd8a84"
      unitRef="usd">33484000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="ieb0737a6b805496eb64c267495cdc455_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC04LTEtMS0zNjE5OA_393d18bd-f89e-4816-b9f8-860a2809995e"
      unitRef="usd">663000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOC0xNC0xLTEtMzYxOTg_ac968c86-46f1-4f39-8aad-01e1ea4ce0aa"
      unitRef="usd">663000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i5b9a216ba92f4662a6c5e29e4660d201_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS0yLTEtMS0zNjE5OA_0d15810e-5c11-4663-b323-5b68546b0b31"
      unitRef="shares">62122000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i5b9a216ba92f4662a6c5e29e4660d201_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS00LTEtMS0zNjE5OA_687fecf1-c714-492f-8986-ef7dec22d24e"
      unitRef="usd">1553000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i2b2de5dc230f469ebf57510dcb995ef8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS02LTEtMS0zNjE5OA_a9e0e002-cc12-45a3-b664-3d635831a527"
      unitRef="usd">948055000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i70828112df2e4dc0aacf44aeade1a12c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS04LTEtMS0zNjE5OA_8f9b5fc0-7fc0-494b-94a6-09ddb8a16d8e"
      unitRef="usd">-191000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="id00d493640324cd0b73797ced1093269_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS0xMC0xLTEtMzYxOTg_dad957e2-2a5d-4afc-afb3-ac09f4dc6222"
      unitRef="usd">-669092000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ic512b19e711643f59c98f75953b49777_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS0xMi0xLTEtMzYxOTg_c85d0e08-38e2-4dd4-83a0-97eba2bfcafe"
      unitRef="usd">0</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfOS0xNC0xLTEtMzYxOTg_7bda2114-4cff-4220-b2ed-f31576f73122"
      unitRef="usd">280325000</us-gaap:StockholdersEquity>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="ifc02f355b98046449ab7a198a475e208_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTAtNi0xLTEtMzYxOTg_53febdc7-98ed-4628-9629-521b9ccb14db"
      unitRef="usd">24230000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTAtMTQtMS0xLTM2MTk4_53512420-0e1f-4aa1-912f-98a8883bf422"
      unitRef="usd">24230000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="iced057490ecb40f8af711b91b2a3800d_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTEtMi0xLTEtMzYxOTg_0cc419de-a035-456e-b657-e0ea0b1bf1a2"
      unitRef="shares">2152000</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="iced057490ecb40f8af711b91b2a3800d_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTEtNC0xLTEtMzYxOTg_d3a69544-e48e-47aa-b4a4-a81b82cd2702"
      unitRef="usd">54000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="ifc02f355b98046449ab7a198a475e208_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTEtNi0xLTEtMzYxOTg_31f7a500-6894-4c29-a891-313cc7965bcf"
      unitRef="usd">25570000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTEtMTQtMS0xLTM2MTk4_0a64601a-58c8-49ca-a00d-b85dda879cb2"
      unitRef="usd">25624000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:NetIncomeLoss
      contextRef="i338d4f0ba4c9446fa367007416d30e0e_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTQtMTAtMS0xLTM2MTk4_dcc1b6de-f185-4f70-a806-b9503c4c4a4d"
      unitRef="usd">238378000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTQtMTQtMS0xLTM2MTk4_c442cca2-aad9-4793-99d3-da5dc66b8528"
      unitRef="usd">238378000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i00b2f6ea6d574881a414d40c48f4b09f_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTUtOC0xLTEtMzYxOTg_1d5269e0-68ea-45b0-86f3-e55059825c88"
      unitRef="usd">-129000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTUtMTQtMS0xLTM2MTk4_69eeb721-7610-4463-911d-8bfc05a51574"
      unitRef="usd">-129000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="if9d416b760f04d82b7305c51cd60f965_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtMi0xLTEtMzYxOTg_d02bdb5f-fa3a-41d1-99e7-37998ef82535"
      unitRef="shares">64274000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="if9d416b760f04d82b7305c51cd60f965_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtNC0xLTEtMzYxOTg_b6a90e53-d13d-4e44-a843-62abfb86f1b8"
      unitRef="usd">1607000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i6558c3e05bc14f9787f4c77c4cbf02da_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtNi0xLTEtMzYxOTg_b223fa03-4aee-4c79-979d-b691758eb79b"
      unitRef="usd">997855000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i7b351fe8ba1143289315d78b03323c97_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtOC0xLTEtMzYxOTg_21a3e11b-de93-4ea0-a2c0-d77b40475737"
      unitRef="usd">-320000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i62e8d30d767641039a22982dd9da4de2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtMTAtMS0xLTM2MTk4_1378e759-0b34-4c2d-919f-e8575d5d2b61"
      unitRef="usd">-430714000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ib57a8227187a4016b87def7464807008_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtMTItMS0xLTM2MTk4_f4a45b45-0665-455c-91c4-4038d8132728"
      unitRef="usd">0</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTYtMTQtMS0xLTM2MTk4_26bbd1c6-7499-4693-a4aa-e56675d700c9"
      unitRef="usd">568428000</us-gaap:StockholdersEquity>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i8f14ec41ce5b42bdb7290c9b661e7b40_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTctNi0xLTEtMzYxOTg_c2ecd980-0e33-4e25-aaa4-4c18a277f835"
      unitRef="usd">44826000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTctMTQtMS0xLTM2MTk4_57d6013e-baf7-437b-830e-cfd246cc1819"
      unitRef="usd">44826000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="i0e63d4cd16584e67be8964684fea4f2b_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTgtMi0xLTEtMzYxOTg_b86dc833-5e91-4f5f-aa70-bbb0f723a09b"
      unitRef="shares">1461000</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="i0e63d4cd16584e67be8964684fea4f2b_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTgtNC0xLTEtMzYxOTg_e8dc38f8-c2bd-41ed-927c-695418d8afc9"
      unitRef="usd">37000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="i8f14ec41ce5b42bdb7290c9b661e7b40_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTgtNi0xLTEtMzYxOTg_0c0dd9d0-a10a-4958-bc74-48f74f61f1e4"
      unitRef="usd">27419000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTgtMTQtMS0xLTM2MTk4_0736402e-1437-48ab-aeec-92ad752480cf"
      unitRef="usd">27456000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:NetIncomeLoss
      contextRef="i99e1660b325840b39b58d880b4cb6c3a_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTktMTAtMS0xLTM2MTk4_60eb70e8-f497-4785-8d39-88fba95a7396"
      unitRef="usd">41010000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMTktMTQtMS0xLTM2MTk4_0475efb7-57ea-4dda-99d6-f73f14da88a5"
      unitRef="usd">41010000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="iae919b947c1f4fd8a9545cb83d022877_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjAtOC0xLTEtMzYxOTg_5d3f9a1e-a514-4452-a7b4-a2b1313ba121"
      unitRef="usd">-2153000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjAtMTQtMS0xLTM2MTk4_c56dbf53-3469-42a8-b368-1287a0ae0d7b"
      unitRef="usd">-2153000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="ibf694ca5c1784abd900378a9d5cac4c9_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtMi0xLTEtMzYxOTg_2476adcc-dc0e-4030-b76d-56f5c83415e3"
      unitRef="shares">65735000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="ibf694ca5c1784abd900378a9d5cac4c9_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtNC0xLTEtMzYxOTg_a4a79e81-dc5a-4760-a8a7-a24593c99524"
      unitRef="usd">1644000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i1b11ec9c87f647eda542f47bd568cae6_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtNi0xLTEtMzYxOTg_52e53f9d-bf6e-48eb-accf-0b53fa6d3088"
      unitRef="usd">1070100000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i94330ed0d9cb44ad89b11f0416a40439_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtOC0xLTEtMzYxOTg_97dbe019-422c-4285-8c52-d5b12f5a16d2"
      unitRef="usd">-2473000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i2fc9c021dca34b31add79cf37c24ff19_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtMTAtMS0xLTM2MTk4_1d841f55-7085-43f9-a4db-41e74de22c87"
      unitRef="usd">-389704000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ib9005996b5004e2ea8204ab8956288bf_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtMTItMS0xLTM2MTk4_e11149b7-e608-41e9-8334-e17ad0b4a154"
      unitRef="usd">0</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183My9mcmFnOjhmODg4MzkxOTEwZDQ2YzdhMzYxM2JiZGI4MzNkOTc4L3RhYmxlOjYxMzNhY2I5MGU5MzQ2NmU5NTRiMGU5ZDNlMjU3MjEyL3RhYmxlcmFuZ2U6NjEzM2FjYjkwZTkzNDY2ZTk1NGIwZTlkM2UyNTcyMTJfMjEtMTQtMS0xLTM2MTk4_973b8fef-284f-4d8f-8d83-2de953258666"
      unitRef="usd">679567000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMy0yLTEtMS0zNjE5OA_374fc9b9-5f76-480b-b50c-debe5c9d410f"
      unitRef="usd">41010000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMy00LTEtMS0zNjE5OA_995443b1-d5d5-4c4d-b4ba-2c393a9f7988"
      unitRef="usd">238378000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMy02LTEtMS0zNjE5OA_8ac9de10-36b3-4592-9c2f-fb69994b0139"
      unitRef="usd">33484000</us-gaap:NetIncomeLoss>
    <us-gaap:ShareBasedCompensation
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNS0yLTEtMS0zNjE5OA_1a7214e6-0cdc-4a0b-a592-3b7fb7b1d8e4"
      unitRef="usd">44826000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNS00LTEtMS0zNjE5OA_49323b01-c25e-40d7-802f-4f1871b1d2fc"
      unitRef="usd">24230000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNS02LTEtMS0zNjE5OA_4030ddac-fa7e-4c0a-a138-a69275b94e75"
      unitRef="usd">13960000</us-gaap:ShareBasedCompensation>
    <us-gaap:Depreciation
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNi0yLTEtMS0zNjE5OA_cde8cadd-d7ae-45c3-affa-29bc4558d4ba"
      unitRef="usd">14315000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNi00LTEtMS0zNjE5OA_06c01a6e-9f90-459e-a9a9-805ef66c9476"
      unitRef="usd">15012000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNi02LTEtMS0zNjE5OA_ba4a9d21-da0b-429d-aa27-a78c8dae7b6c"
      unitRef="usd">13718000</us-gaap:Depreciation>
    <us-gaap:DeferredIncomeTaxesAndTaxCredits
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNy0yLTEtMS0zNjE5OA_6670ca3d-5141-4f90-9149-debc85e19141"
      unitRef="usd">1932000</us-gaap:DeferredIncomeTaxesAndTaxCredits>
    <us-gaap:DeferredIncomeTaxesAndTaxCredits
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNy00LTEtMS0zNjE5OA_34d444d2-478e-4ec2-a9e0-353e6240e60c"
      unitRef="usd">-168426000</us-gaap:DeferredIncomeTaxesAndTaxCredits>
    <us-gaap:DeferredIncomeTaxesAndTaxCredits
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfNy02LTEtMS0zNjE5OA_d184797d-352e-4448-9e42-3b2b9696b454"
      unitRef="usd">0</us-gaap:DeferredIncomeTaxesAndTaxCredits>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC0yLTEtMS0zNzQwNg_e6f9e704-3889-43c4-8cbf-0cdcfdd68768"
      unitRef="usd">1146000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC00LTEtMS0zNzQwNg_c866bb87-6c7e-4ca6-a1df-a6c8270eff9f"
      unitRef="usd">0</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC02LTEtMS0zNzQwNg_087a59fb-92b6-4325-a2f2-aefa07910d03"
      unitRef="usd">0</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:GainLossOnDispositionOfAssets
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC0yLTEtMS0zNjE5OA_b80cc51b-d87a-4bab-bb25-9a3d3788928c"
      unitRef="usd">0</us-gaap:GainLossOnDispositionOfAssets>
    <us-gaap:GainLossOnDispositionOfAssets
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC00LTEtMS0zNjE5OA_67892efb-d2eb-4f10-948a-78ca97a7e480"
      unitRef="usd">0</us-gaap:GainLossOnDispositionOfAssets>
    <us-gaap:GainLossOnDispositionOfAssets
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfOC02LTEtMS0zNjE5OA_57d86dcd-3fc4-40dc-95f1-014fc0aaab93"
      unitRef="usd">-3914000</us-gaap:GainLossOnDispositionOfAssets>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTAtMi0xLTEtMzYxOTg_f1d59ca7-6afc-4a61-b972-6429c64c7d16"
      unitRef="usd">8585000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTAtNC0xLTEtMzYxOTg_8192cbf2-2f5e-437a-af40-14542226cfc4"
      unitRef="usd">15800000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTAtNi0xLTEtMzYxOTg_11503d39-eaba-4f2c-b08f-7bdd209c3414"
      unitRef="usd">22910000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTEtMi0xLTEtMzYxOTg_97cf7d31-64f4-4230-80e8-832ed6667d82"
      unitRef="usd">60280000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTEtNC0xLTEtMzYxOTg_a5db9ced-399e-46c9-a565-d89738a7f4e3"
      unitRef="usd">36612000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTEtNi0xLTEtMzYxOTg_32d91333-49b6-443f-a4da-c590e5e12fa8"
      unitRef="usd">12116000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTItMi0xLTEtMzYxOTg_b2549220-2c20-4168-8c0e-ce69b19494c1"
      unitRef="usd">38359000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTItNC0xLTEtMzYxOTg_83f7688c-282c-403e-98fd-d694a125a02a"
      unitRef="usd">27074000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTItNi0xLTEtMzYxOTg_cfa8d802-2f2d-427a-8248-258900890da6"
      unitRef="usd">-773000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTMtMi0xLTEtMzYxOTg_2cc582b2-f688-4256-8f92-984241089669"
      unitRef="usd">12111000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTMtNC0xLTEtMzYxOTg_1715cd15-dc5c-4048-b973-a25443ffc21a"
      unitRef="usd">16025000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTMtNi0xLTEtMzYxOTg_baa06cf9-771f-47f8-926c-22a0bffcc207"
      unitRef="usd">2190000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTQtMi0xLTEtMzYxOTg_4141405f-5d16-493d-819e-07c0abe5611b"
      unitRef="usd">20919000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTQtNC0xLTEtMzYxOTg_2c04f829-577f-4fd9-884a-cedac97b25a0"
      unitRef="usd">3273000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTQtNi0xLTEtMzYxOTg_83cab1e2-6177-4dfc-92c0-2ae318d3121c"
      unitRef="usd">11922000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInDeferredRevenue
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTUtMi0xLTEtMzYxOTg_6760df14-99c2-4326-aa1f-a67746bd6074"
      unitRef="usd">9118000</us-gaap:IncreaseDecreaseInDeferredRevenue>
    <us-gaap:IncreaseDecreaseInDeferredRevenue
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTUtNC0xLTEtMzYxOTg_1b84291e-6674-4290-9e9a-0d8d817a9e1b"
      unitRef="usd">10400000</us-gaap:IncreaseDecreaseInDeferredRevenue>
    <us-gaap:IncreaseDecreaseInDeferredRevenue
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTUtNi0xLTEtMzYxOTg_c97e7d2d-4898-49dd-811d-d19c94fc77a2"
      unitRef="usd">3596000</us-gaap:IncreaseDecreaseInDeferredRevenue>
    <us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTYtMi0xLTEtMzYxOTg_aaeace7a-823e-4368-a3cf-de1c9d76c4e2"
      unitRef="usd">-8678000</us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities>
    <us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTYtNC0xLTEtMzYxOTg_a6b13a19-12e5-4af4-a992-9c9882617e0d"
      unitRef="usd">-2613000</us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities>
    <us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTYtNi0xLTEtMzYxOTg_be02ad42-7ba1-4850-8dbb-cb6a1346fb16"
      unitRef="usd">2878000</us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTctMi0xLTEtMzYxOTg_8d62e837-54bc-427c-af5b-40e89295d346"
      unitRef="usd">27183000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTctNC0xLTEtMzYxOTg_fe6650a9-e5c2-429a-a435-34c0224a9792"
      unitRef="usd">56793000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTctNi0xLTEtMzYxOTg_b5345dcd-81f6-4548-9ca9-3c2a4083ef41"
      unitRef="usd">51409000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTktMi0xLTEtMzYxOTg_612152f4-befa-4816-9950-00cb0f70edf4"
      unitRef="usd">14067000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTktNC0xLTEtMzYxOTg_9f625507-5ef6-4aa6-951c-25cd71cf15fd"
      unitRef="usd">10463000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMTktNi0xLTEtMzYxOTg_bbb6fe79-2d86-4bcf-869f-e0bcaefee7e3"
      unitRef="usd">7819000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquireMarketableSecurities
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjAtMi0xLTEtMzYxOTg_051d20b3-1265-4124-8626-afc963090d66"
      unitRef="usd">191403000</us-gaap:PaymentsToAcquireMarketableSecurities>
    <us-gaap:PaymentsToAcquireMarketableSecurities
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjAtNC0xLTEtMzYxOTg_7916e84a-2fe2-43ef-aacb-0d20b31b7c14"
      unitRef="usd">298092000</us-gaap:PaymentsToAcquireMarketableSecurities>
    <us-gaap:PaymentsToAcquireMarketableSecurities
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjAtNi0xLTEtMzYxOTg_5a9ae3d6-6426-4a49-ab49-de505ee98a9a"
      unitRef="usd">72982000</us-gaap:PaymentsToAcquireMarketableSecurities>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjItMi0xLTEtMzYxOTg_0a01cb6f-91c4-4ce0-89ee-67f86faf132b"
      unitRef="usd">181388000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjItNC0xLTEtMzYxOTg_f5cebf24-5196-4a12-8934-521d1fd70ad7"
      unitRef="usd">197894000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjItNi0xLTEtMzYxOTg_58420d25-0f08-4242-8fa9-a04c73064ea1"
      unitRef="usd">20000000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjMtMi0xLTEtMzYxOTg_1cfba3c1-363f-49c5-a891-d6605d1d8cca"
      unitRef="usd">-24082000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjMtNC0xLTEtMzYxOTg_7ec76ffe-46f6-4193-b035-27952fdd0892"
      unitRef="usd">-110661000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjMtNi0xLTEtMzYxOTg_dbcfe9bc-be48-4dde-87ab-0fe0e9ef95a9"
      unitRef="usd">-60801000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjUtMi0xLTEtMzYxOTg_9c9e5e14-9609-47f9-b5fb-d76b1b98d107"
      unitRef="usd">27456000</us-gaap:ProceedsFromStockOptionsExercised>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjUtNC0xLTEtMzYxOTg_8697ea18-b4e6-4db9-b42a-e6e15d526150"
      unitRef="usd">25624000</us-gaap:ProceedsFromStockOptionsExercised>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjUtNi0xLTEtMzYxOTg_4356cc04-28df-44b5-a382-3e43fe7d804d"
      unitRef="usd">18127000</us-gaap:ProceedsFromStockOptionsExercised>
    <calx:PaymentsForFinancingArrangements
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjYtMi0xLTEtMzYxOTg_986c6cdb-b8da-4e8e-9919-6440c36fe75c"
      unitRef="usd">2393000</calx:PaymentsForFinancingArrangements>
    <calx:PaymentsForFinancingArrangements
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjYtNC0xLTEtMzYxOTg_707c30a3-9274-4775-be3f-ceb78faa2a0e"
      unitRef="usd">1241000</calx:PaymentsForFinancingArrangements>
    <calx:PaymentsForFinancingArrangements
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjYtNi0xLTEtMzYxOTg_d9b52108-8036-4ec4-a01c-2e77276ed8f6"
      unitRef="usd">5758000</calx:PaymentsForFinancingArrangements>
    <us-gaap:ProceedsFromIssuanceOfCommonStock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjctMi0xLTEtMzYxOTg_d11f7215-9c63-4abf-868d-ab637be3fc4e"
      unitRef="usd">0</us-gaap:ProceedsFromIssuanceOfCommonStock>
    <us-gaap:ProceedsFromIssuanceOfCommonStock
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjctNC0xLTEtMzYxOTg_3e69de40-9244-4b7a-8fc5-5111cf86fc7e"
      unitRef="usd">0</us-gaap:ProceedsFromIssuanceOfCommonStock>
    <us-gaap:ProceedsFromIssuanceOfCommonStock
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjctNi0xLTEtMzYxOTg_807776fe-d879-490d-a32d-a2611ea483f5"
      unitRef="usd">60063000</us-gaap:ProceedsFromIssuanceOfCommonStock>
    <us-gaap:ProceedsFromLinesOfCredit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjgtMi0xLTEtMzYxOTg_15e8e3f7-e8d3-441c-bf0e-e109af16b386"
      unitRef="usd">0</us-gaap:ProceedsFromLinesOfCredit>
    <us-gaap:ProceedsFromLinesOfCredit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjgtNC0xLTEtMzYxOTg_449a09cb-611a-4839-ab4e-747dbe34370b"
      unitRef="usd">0</us-gaap:ProceedsFromLinesOfCredit>
    <us-gaap:ProceedsFromLinesOfCredit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjgtNi0xLTEtMzYxOTg_8ee21806-e04b-4eab-b71c-2d6193507382"
      unitRef="usd">30000000</us-gaap:ProceedsFromLinesOfCredit>
    <us-gaap:RepaymentsOfLinesOfCredit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjktMi0xLTEtMzYxOTg_82bb49b5-336e-45a7-b3fb-986132df7fa0"
      unitRef="usd">0</us-gaap:RepaymentsOfLinesOfCredit>
    <us-gaap:RepaymentsOfLinesOfCredit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjktNC0xLTEtMzYxOTg_66c83405-84d2-4bad-94f9-231c6b9b28d2"
      unitRef="usd">0</us-gaap:RepaymentsOfLinesOfCredit>
    <us-gaap:RepaymentsOfLinesOfCredit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMjktNi0xLTEtMzYxOTg_6dd48874-4e3e-4ee0-92b3-1569ae93d38d"
      unitRef="usd">60285000</us-gaap:RepaymentsOfLinesOfCredit>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzAtMi0xLTEtMzYxOTg_ececc9c4-2734-4b56-b417-54ae9828c75d"
      unitRef="usd">25063000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzAtNC0xLTEtMzYxOTg_d74ae577-b3b5-4c46-865e-9e10a8ccb7b2"
      unitRef="usd">24383000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzAtNi0xLTEtMzYxOTg_4f852aea-0478-4da8-bfff-c20434eb9159"
      unitRef="usd">42147000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzEtMi0xLTEtMzYxOTg_9e4d48c8-1452-4708-9784-deafd3440184"
      unitRef="usd">-424000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzEtNC0xLTEtMzYxOTg_6ee1f480-43d5-4416-b8b6-10d3b0357599"
      unitRef="usd">11000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzEtNi0xLTEtMzYxOTg_b1ea4636-3687-49d0-9549-6493981cc7fa"
      unitRef="usd">595000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzItMi0xLTEtMzYxOTg_91298359-b980-4059-9389-ae6bc489db9e"
      unitRef="usd">27740000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzItNC0xLTEtMzYxOTg_2cbf96da-a111-4172-9f03-b16a94e1d5a3"
      unitRef="usd">-29474000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzItNi0xLTEtMzYxOTg_34085856-a05a-49da-a3d4-ebf6ec00bb7b"
      unitRef="usd">33350000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzMtMi0xLTEtMzYxOTg_7076c963-a413-4d55-88a7-63e3621c79d6"
      unitRef="usd">51333000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzMtNC0xLTEtMzYxOTg_e7b015de-0ea6-4f8b-801a-19007f8d8900"
      unitRef="usd">80807000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ibe3ffb6b029948b89bd038665fa57d44_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzMtNi0xLTEtMzYxOTg_22900dcd-b449-4103-b7fe-74f16f12bc9b"
      unitRef="usd">47457000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzQtMi0xLTEtMzYxOTg_209cb8bb-262d-4ae0-ae37-379e517f6dc4"
      unitRef="usd">79073000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzQtNC0xLTEtMzYxOTg_13182c9f-38a6-4734-8916-e91c4448709c"
      unitRef="usd">51333000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzQtNi0xLTEtMzYxOTg_d1050468-e682-47b9-b68c-1e464ea6a187"
      unitRef="usd">80807000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:InterestPaidNet
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzYtMi0xLTEtMzYxOTg_ff3b118d-c2bb-42b6-8a1e-37307d790f66"
      unitRef="usd">577000</us-gaap:InterestPaidNet>
    <us-gaap:InterestPaidNet
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzYtNC0xLTEtMzYxOTg_6a399296-ecf0-42c6-b835-38f3af617671"
      unitRef="usd">631000</us-gaap:InterestPaidNet>
    <us-gaap:InterestPaidNet
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzYtNi0xLTEtMzYxOTg_93a9c5c7-40a3-4891-b201-a4b722d81d19"
      unitRef="usd">1686000</us-gaap:InterestPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzctMi0xLTEtMzYxOTg_c5d68f42-2a90-4262-b08c-94341b1fb3df"
      unitRef="usd">9607000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzctNC0xLTEtMzYxOTg_ef943509-0deb-418c-9df2-68cdb1945d4a"
      unitRef="usd">5197000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzctNi0xLTEtMzYxOTg_19e4b0e1-e110-43b8-af97-974cf2a95adf"
      unitRef="usd">751000</us-gaap:IncomeTaxesPaidNet>
    <calx:ChangeInCapitalExpendituresIncurredButNotYetPaid
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzktMi0xLTEtMzYxOTg_96138e07-9469-41e2-bf32-cc3cdac3dc47"
      unitRef="usd">586000</calx:ChangeInCapitalExpendituresIncurredButNotYetPaid>
    <calx:ChangeInCapitalExpendituresIncurredButNotYetPaid
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzktNC0xLTEtMzYxOTg_4e369818-8133-4992-9f17-9b524416190e"
      unitRef="usd">194000</calx:ChangeInCapitalExpendituresIncurredButNotYetPaid>
    <calx:ChangeInCapitalExpendituresIncurredButNotYetPaid
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM183Ni9mcmFnOjhmOWUyNDIzYTQxZDQ2YzhhMDRjOTU2NGU0ZGM0OTlkL3RhYmxlOmMzOTRhYmEyZmFhZTRiOTRiNGNlNjVhYTU1MzQ5ZmJlL3RhYmxlcmFuZ2U6YzM5NGFiYTJmYWFlNGI5NGI0Y2U2NWFhNTUzNDlmYmVfMzktNi0xLTEtMzYxOTg_6311b8c9-c989-438b-80bc-ba5bdbe6c179"
      unitRef="usd">-597000</calx:ChangeInCapitalExpendituresIncurredButNotYetPaid>
    <us-gaap:BusinessDescriptionAndAccountingPoliciesTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYwOTk_ced746a3-36a3-4f18-914d-d68371cd6ed8">Description of Business and Significant Accounting Policies&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Company&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Calix, Inc. (together with its subsidiaries, &#x201c;Calix&#x201d; or the &#x201c;Company&#x201d;) was incorporated in August 1999 and is a Delaware corporation. The Company is the leading global provider of a platform (cloud, software and systems) and managed services that focus on the subscriber-facing network, the portion of the network that governs available bandwidth and determines the range and quality of services that can be offered to subscribers. This platform and managed services enable broadband service providers (&#x201c;BSPs&#x201d;) of all sizes to innovate and transform their businesses. The Company&#x2019;s BSP customers are empowered to utilize real-time data and insights from the Calix platform to simplify their businesses and deliver experiences that excite their subscribers. These insights enable BSPs to grow their businesses through increased subscriber acquisition, loyalty and revenue, thereby increasing the value of their businesses and contributions to their communities.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Basis of Presentation and Accounting Guidance&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The accompanying consolidated financial statements have been prepared in accordance with the requirements of the U.S. Securities and Exchange Commission (&#x201c;SEC&#x201d;) and U.S. generally accepted accounting principles (&#x201c;GAAP&#x201d;). All significant intercompany balances and transactions have been eliminated in consolidation. Any reference in these notes to applicable accounting guidance is meant to refer to the authoritative U.S. GAAP as found in the Financial Accounting Standards Board (&#x201c;FASB&#x201d;) Accounting Standards Codification (&#x201c;ASC&#x201d;).&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Use of Estimates&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The preparation of financial statements is in conformity with U.S. GAAP, which requires management to make estimates and assumptions that affect the amounts reported in the consolidated financial statements and accompanying notes. For the Company, these estimates include, but are not limited to: allowances for doubtful accounts and sales returns, excess and obsolete inventory, allowances for obligations to its contract manufacturers, valuation of stock-based compensation, useful lives assigned to long-lived assets, standard and extended warranty costs, realizability of deferred tax assets and uncertain tax positions and contingencies. Actual results could differ from those estimates, and such differences could be material to the Company&#x2019;s financial position and results of operations.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Revenue Recognition&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Revenue is recognized when a performance obligation is satisfied, which occurs 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 to in exchange for those goods or services. Revenue from sales of access and premises systems is recognized when control is transferred to the customer, which is generally when the products are shipped. Revenue from software platform licenses, which provides the customer with a right to use the software as it exists, is generally recognized upfront when made available to the customer. Revenue from cloud-based software subscriptions, customer support, maintenance, extended warranty subscriptions and managed services is generally recognized ratably over the contract term. Revenue from professional services and training is recognized as the services are delivered.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A performance obligation is a promise in a contract to transfer a distinct good or service to the customer and is the unit of account. A contract&#x2019;s transaction price is allocated to each distinct performance obligation and recognized as revenue when, or as, the performance obligation is satisfied. The Company&#x2019;s hardware products contain both software and non-software components that function together to deliver the products&#x2019; essential functionality and therefore constitutes a single performance obligation as the promise to transfer the individual software and non-software components is not separately identifiable and, therefore, not distinct. Cloud-based software subscriptions can include multi-year agreements with a fixed annual fee for a minimum committed usage level. To the extent that minimum committed usage level each year varies, the Company has concluded that each year represents a distinct stand-ready performance obligation and the transaction price allocated to each performance obligation is recognized as revenue ratably over each annual period. The Company&#x2019;s contracts may include multiple performance obligations. For such arrangements, the Company allocates the contract&#x2019;s transaction price to each performance obligation using the relative stand-alone selling price of each distinct good or service in the contract. The Company generally determines stand-alone selling prices based on the prices charged to customers or its best estimate of stand-alone selling price. The Company&#x2019;s estimate of stand-alone selling price is established considering multiple factors including, but not limited to, geographies, market conditions, competitive landscape, internal costs, gross margin objectives, characteristics of targeted customers and pricing practices. The determination of estimated stand-alone selling price is made through consultation with and formal approval by management, taking into consideration the go-to-market strategy.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cost of Revenue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cost of revenue consists primarily of finished goods inventory purchased from the Company&#x2019;s contract manufacturers, payroll and related expenses associated with managing the relationships with contract manufacturers, depreciation of manufacturing test equipment, warranty and retrofit costs, excess and obsolete inventory costs, allowances for obligations to its contract manufacturers, shipping charges and amortization of certain intangible assets. It also includes contractor and other costs of services incurred directly related to the delivery of services to customers.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Warranty and Retrofit&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company offers limited warranties for its hardware products for a period of &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1NQ_52e60d60-98c1-49fa-aeb6-aa5951b471ac"&gt;one&lt;/span&gt;, &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1OQ_d86fb7cc-3137-407d-b8ce-6c28a7e598e4"&gt;three&lt;/span&gt; or five years, depending on the product type. The Company recognizes estimated costs related to warranty activities as a component of cost of revenue upon product shipment or upon identification of a specific product failure. Under certain circumstances, the Company also provides fixes on specifically identified performance failures for products that are outside of the standard warranty period and recognizes estimated costs related to retrofit activities as a component of cost of revenue upon identification of such product failures. The Company recognizes estimated warranty and retrofit costs when it is probable that a liability has been incurred and the amount of loss is reasonably estimable. The estimates are based upon historical and projected product failure and claim rates, historical costs incurred in correcting product failures and information available related to any specifically identified product failures. Judgment is required in estimating costs associated with warranty and retrofit activities, and the Company's estimates are limited to information available to the Company at the time of such estimates. In some cases, such as when a specific product failure is first identified or a new product is introduced, the Company may initially have limited information and limited historical failure and claim rates upon which to base its estimates, and such estimates may require revision in future periods. The recorded amount is adjusted from time to time for specifically identified warranty and retrofit exposure. Actual warranty and retrofit expenses are charged against the Company&#x2019;s estimated warranty and retrofit liability when incurred. Factors that affect the Company&#x2019;s warranty and retrofit liability include the number of active installed units and historical and anticipated rates of warranty and retrofit claims and cost per claim.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Stock-Based Compensation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Stock-based compensation expense associated with stock options and purchase rights under the Amended and Restated Employee Stock Purchase Plan (the &#x201c;ESPP&#x201d;) and the Amended and Restated 2017 Nonqualified Employee Stock Purchase Plan (the &#x201c;NQ ESPP&#x201d;) is measured at the grant date based on the fair value of the award and is recognized, net of forfeitures, as expense over the remaining requisite service period (generally the vesting period) on a straight-line basis.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair value of stock option and employee stock purchase right under the ESPP is estimated at the grant date using the Black-Scholes option valuation model. The fair value of the employee stock purchase right under the NQ ESPP is based on closing market price of the Company&#x2019;s common stock on the date of grant.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Stock-based compensation expense associated with performance stock options (&#x201c;PSOs&#x201d;) with graded vesting features and which contain both a performance and a service condition is measured based on fair value of stock options estimated at the grant date using the Black-Scholes option valuation model, and is recognized, net of forfeitures, as expense over the requisite service period using the graded vesting attribution method.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Compensation expense is only recognized if the Company has determined that it is probable that the performance condition will be met. The Company reassesses the probability of vesting at each reporting period and adjusts compensation expense based on its probability assessment.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Loss Contingencies&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;From time to time, the Company is involved in legal proceedings arising from the normal course of business activities. The Company evaluates the likelihood of an unfavorable outcome of legal proceedings to which it is a party and accrues a loss contingency when the loss is probable and reasonably estimable. Assessing legal contingencies involves significant judgment and estimates, and the outcome of litigation is inherently uncertain and subject to numerous factors outside the Company&#x2019;s control. Significant judgment is required when the Company assesses the likelihood of any adverse judgments or outcomes, including the potential range of possible losses, and whether losses are probable and reasonably estimable.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Because of uncertainties related to these matters, the Company bases its estimates of whether a loss contingency is probable or reasonably possible, as well as the reasonable range of possible losses associated with each loss contingency, only on the information available at the time. As additional information becomes available, and at least quarterly, the Company reassesses the potential liability on each significant matter and may revise its estimates. These revisions could have a material impact on the Company&#x2019;s business, operating results or financial condition. The actual outcome of these legal proceedings may materially differ from the Company&#x2019;s estimates of potential liability, which could have a material adverse effect on the Company&#x2019;s business, operating results or financial condition.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Credit Risk and Inventory Supplier Concentrations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Financial instruments that potentially subject the Company to significant concentrations of credit risk consist primarily of cash, cash equivalents, marketable securities and accounts receivable. Cash equivalents consist of money market funds and marketable securities with a maturity at the date of purchase of ninety days or less, which are invested through financial institutions in the United States. Deposits in and investments held by these financial institutions may, at times, exceed federally insured limits. The Company has not experienced any losses in such accounts. The Company also has approximately $2.7 million of cash held by its foreign subsidiaries in India, China and the United Kingdom. Management believes that the financial institutions that hold the Company&#x2019;s cash and cash equivalents are financially sound and, accordingly, minimal credit risk exists with respect to these cash and cash equivalents.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company depends primarily on a small number of outside contract manufacturers (&#x201c;CMs&#x201d;) and original design manufacturers (&#x201c;ODMs&#x201d;) for the bulk of its finished goods inventory. The Company generally purchases its products through purchase orders with its suppliers. While the Company seeks to maintain a sufficient supply of its products, the Company&#x2019;s business and results of operations could be adversely affected by a stoppage or delay in receiving such products, the receipt of defective parts, an increase in price of such products or the Company&#x2019;s inability to obtain lower prices from its CMs, ODMs and other suppliers in response to competitive pressures.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Fair Value of Financial Instruments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The carrying amounts of cash and cash equivalents, trade receivables, accounts payable and other accrued liabilities approximate their fair value due to their relatively short-term nature. Marketable securities are valued using quoted market prices in active markets to determine fair value.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cash, Cash Equivalents and Marketable Securities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash equivalents and marketable securities are stated at amounts that approximate fair value based on quoted market prices.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company has invested its excess cash primarily in money market funds and highly liquid marketable securities such as U.S. treasury securities, corporate debt instruments, commercial paper and U.S. government securities. The Company considers all investments with maturities of three months or less when purchased to be cash equivalents. Marketable securities represent highly liquid U.S. treasury securities, corporate debt instruments, commercial paper and U.S. government securities with maturities greater than 90 days at date of purchase. Marketable securities with maturities greater than one year are classified as current because management considers all marketable securities to be available for current operations.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s investments have been classified and accounted for as available-for-sale. Such investments are recorded at fair value and unrealized holding gains and losses are reported as a separate component of comprehensive loss in the stockholders&#x2019; equity until realized. Realized gains and losses on sales of marketable securities, if any, are determined on the specific identification method and are reclassified from accumulated other comprehensive loss to results of operations as &#x201c;Other income (expense), net.&#x201d; Realized gains and losses were not significant for the years ended December&#160;31, 2022 and 2021, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For the Company&#x2019;s available-for-sale debt securities in an unrealized loss position, the Company determines whether a credit loss exists. In this assessment, among other factors, the Company considers the extent to which the fair value is less than the amortized cost, any changes to the rating of the security by a rating agency, and adverse conditions specifically related to the security. If factors indicate a credit loss exists, an allowance for credit loss will be recorded to &#x201c;Other income (expense), net,&#x201d; limited by the amount that the fair value is less than the amortized cost basis. The amount of fair value change relating to all other factors will be recognized in other comprehensive loss.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;See Note 2 &#x201c;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Cash, Cash Equivalents and Marketable Securities.&#x201d;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Allowance for Doubtful Accounts&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company maintains an allowance for doubtful accounts for expected credit losses at contract inception resulting from the inability of its customers to make required payments. The Company records a specific allowance and revises the expected loss based on an analysis of individual past-due balances. Additionally, based on historical write-offs and the Company&#x2019;s collection experience, the Company records an additional allowance based on a percentage of outstanding receivables. The Company performs credit evaluations of its customers&#x2019; financial condition. These evaluations require judgment and are based on a variety of factors including, but not limited to, current economic trends, payment history and a financial review of the customer. Actual collection losses may differ from management&#x2019;s estimates, and such differences could be material to the Company's financial position and results of operations.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Inventory Valuation and Supplier Purchase Commitments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventory, which primarily consists of finished goods purchased from CMs or ODMs, is stated at the lower of cost (determined by the first-in, first-out method) or market value. Inbound shipping costs and U.S. tariffs are included in cost of inventory. In &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;addition, from time to time, the Company procures component inventory primarily as a result of manufacturing discontinuation of critical components by suppliers. The Company regularly monitors inventory quantities on hand and records write-downs for excess and obsolete inventories based on the Company&#x2019;s estimate of demand for its products, potential obsolescence of technology, product life cycles and whether pricing trends or forecasts indicate that the carrying value of inventory exceeds its estimated selling price. The Company also evaluates its supplier purchase commitments, which have increased significantly due to extended lead-times in the current supply chain environment, and records a liability for excess and obsolete components based on its estimated demand of our products, potential obsolescence of technology and product life cycles.&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt; &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;These factors are impacted by market and economic conditions, technology changes and new product introductions and require significant estimates that may include elements that are uncertain. Actual demand may differ from forecasted demand and may have a material effect on gross profit. If inventory is written down, a new cost basis is established that cannot be increased in future periods. Shipments from suppliers before the Company receives them are recorded as in-transit inventory when title and the significant risks and rewards of ownership have passed to the Company.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Contract Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company capitalizes certain sales commissions related primarily to multi-year cloud-based software subscriptions and extended warranty support contracts.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Capitalized commissions are amortized as sales and marketing expenses over the period that the related revenue is recognized, which can be up to five years for extended warranty. The Company classifies the unamortized portion of deferred commissions as current or noncurrent based on the timing of when the Company expects to recognize the expense. The current and noncurrent portions of deferred commissions are included in &#x201c;Prepaid expenses and other current assets&#x201d; and &#x201c;Other assets,&#x201d; respectively, in the Company&#x2019;s Consolidated Balance Sheets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Property and Equipment&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property and equipment are stated at cost, less accumulated depreciation, and are depreciated using the straight-line method over the estimated useful life of each asset. Generally, computer equipment is depreciated over two years; purchased software is depreciated over &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4MDI_2e01504e-91d5-45fd-890f-25b987875d7a"&gt;three&lt;/span&gt; to five years; test equipment is depreciated over three years; furniture and fixtures are depreciated over seven years; and leasehold improvements are depreciated over the shorter of the respective lease term or the estimated useful life of the asset. Maintenance and repairs are charged to expense as incurred.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Goodwill&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Goodwill was recorded as a result of the Company&#x2019;s acquisitions of Occam Networks, Inc. in February 2011 and Optical Solutions, Inc. in February 2006. The Company records goodwill when consideration paid in a business acquisition exceeds the fair value of the net tangible assets and the identified intangible assets acquired. Goodwill is not amortized but instead is subject to an annual impairment test or more frequently if events or changes in circumstances indicate that it may be impaired. The Company evaluates goodwill on an annual basis as of the end of the second quarter of each fiscal year. Management has determined that it operates as a single reporting unit and, therefore, evaluates goodwill impairment at the enterprise level.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At the end of the second quarter of 2022, the Company completed its annual goodwill impairment test. Based on its assessment of certain qualitative factors such as market capitalization, management concluded that the fair value of the Company was more likely than not greater than its carrying amount as of July 2, 2022. As such, it was not necessary to perform the two-step quantitative goodwill impairment test at the time.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;There have been no significant events or changes in circumstances subsequent to the 2022 annual impairment test that would more likely than not indicate that the carrying value of goodwill may have been impaired as of December&#160;31, 2022. There were no impairment losses for goodwill for the years ended December&#160;31, 2022, 2021 or 2020.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Deferred Revenue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred revenue results from transactions where the Company billed the customer for products or services and when cash payments are received or due prior to transferring control of the promised goods or services to the customer. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Payment terms to customers typically range from net&#160;30&#160;to net&#160;90&#160;days and vary by the size and location of customer and the products or services offered. The period between the transfer of control of the promised good or service to a customer and when payment is due is not significant.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Income Taxes&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company evaluates its tax positions and estimates its current tax exposure along with assessing temporary differences that result from different book to tax treatment of items not currently deductible for tax purposes. These differences result in deferred tax assets and liabilities on the Company&#x2019;s Consolidated Balance Sheets, which are estimated based upon the &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;difference between the financial statement and tax bases of assets and liabilities using the enacted tax rates that will be in effect when these differences reverse. In general, deferred tax assets represent future tax benefits to be received when certain expenses previously recognized in the Company&#x2019;s Consolidated Statements of Comprehensive Income become deductible expenses under applicable income tax laws or loss or credit carryforwards are utilized. Accordingly, realization of the Company&#x2019;s deferred tax assets is dependent on future taxable income against which these deductions, losses and credits can be utilized.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company must assess the likelihood that deferred tax assets will be recovered from future taxable income, and if the Company determines that recovery is not more likely than not, the Company must establish a valuation allowance. Management judgment is required in determining its provision for income taxes, deferred tax assets and liabilities and any valuation allowance recorded against its net deferred tax assets. In the third quarter of 2021, the Company reversed the majority of its valuation allowance and recorded on its balance sheet U.S. federal and certain state deferred tax assets of $162.0&#160;million. As of December 31, 2022, the Company determined that positive evidence continues to outweigh negative evidence and concluded that it was more likely than not that its U.S. federal and state (with the exception of California) deferred tax assets are realizable. The Company currently maintains a valuation allowance of $29.9 million for certain U.S. federal and California deferred tax assets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Newly Adopted Accounting Standards&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company did not adopt any new accounting standards in 2022 that were significant to the Company.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Recent Accounting Pronouncements Not Yet Adopted&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;There have been no accounting pronouncements or changes in accounting pronouncements that are significant or potentially significant to the Company.&lt;/span&gt;&lt;/div&gt;</us-gaap:BusinessDescriptionAndAccountingPoliciesTextBlock>
    <us-gaap:BasisOfAccountingPolicyPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxODQ_65aa2116-a6d8-4ea6-87ef-995c0c7a94be">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Basis of Presentation and Accounting Guidance&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The accompanying consolidated financial statements have been prepared in accordance with the requirements of the U.S. Securities and Exchange Commission (&#x201c;SEC&#x201d;) and U.S. generally accepted accounting principles (&#x201c;GAAP&#x201d;). All significant intercompany balances and transactions have been eliminated in consolidation. Any reference in these notes to applicable accounting guidance is meant to refer to the authoritative U.S. GAAP as found in the Financial Accounting Standards Board (&#x201c;FASB&#x201d;) Accounting Standards Codification (&#x201c;ASC&#x201d;).&lt;/span&gt;&lt;/div&gt;</us-gaap:BasisOfAccountingPolicyPolicyTextBlock>
    <us-gaap:UseOfEstimates
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMTM_f55d930a-718a-43e5-97ee-846f188411cb">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Use of Estimates&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The preparation of financial statements is in conformity with U.S. GAAP, which requires management to make estimates and assumptions that affect the amounts reported in the consolidated financial statements and accompanying notes. For the Company, these estimates include, but are not limited to: allowances for doubtful accounts and sales returns, excess and obsolete inventory, allowances for obligations to its contract manufacturers, valuation of stock-based compensation, useful lives assigned to long-lived assets, standard and extended warranty costs, realizability of deferred tax assets and uncertain tax positions and contingencies. Actual results could differ from those estimates, and such differences could be material to the Company&#x2019;s financial position and results of operations.&lt;/span&gt;&lt;/div&gt;</us-gaap:UseOfEstimates>
    <us-gaap:RevenueFromContractWithCustomerPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYyMDA_244a0ca6-2336-4e3b-843e-9bcf4f232872">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Revenue Recognition&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Revenue is recognized when a performance obligation is satisfied, which occurs 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 to in exchange for those goods or services. Revenue from sales of access and premises systems is recognized when control is transferred to the customer, which is generally when the products are shipped. Revenue from software platform licenses, which provides the customer with a right to use the software as it exists, is generally recognized upfront when made available to the customer. Revenue from cloud-based software subscriptions, customer support, maintenance, extended warranty subscriptions and managed services is generally recognized ratably over the contract term. Revenue from professional services and training is recognized as the services are delivered.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A performance obligation is a promise in a contract to transfer a distinct good or service to the customer and is the unit of account. A contract&#x2019;s transaction price is allocated to each distinct performance obligation and recognized as revenue when, or as, the performance obligation is satisfied. The Company&#x2019;s hardware products contain both software and non-software components that function together to deliver the products&#x2019; essential functionality and therefore constitutes a single performance obligation as the promise to transfer the individual software and non-software components is not separately identifiable and, therefore, not distinct. Cloud-based software subscriptions can include multi-year agreements with a fixed annual fee for a minimum committed usage level. To the extent that minimum committed usage level each year varies, the Company has concluded that each year represents a distinct stand-ready performance obligation and the transaction price allocated to each performance obligation is recognized as revenue ratably over each annual period. The Company&#x2019;s contracts may include multiple performance obligations. For such arrangements, the Company allocates the contract&#x2019;s transaction price to each performance obligation using the relative stand-alone selling price of each distinct good or service in the contract. The Company generally determines stand-alone selling prices based on the prices charged to customers or its best estimate of stand-alone selling price. The Company&#x2019;s estimate of stand-alone selling price is established considering multiple factors including, but not limited to, geographies, market conditions, competitive landscape, internal costs, gross margin objectives, characteristics of targeted customers and pricing practices. The determination of estimated stand-alone selling price is made through consultation with and formal approval by management, taking into consideration the go-to-market strategy.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Contract Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company capitalizes certain sales commissions related primarily to multi-year cloud-based software subscriptions and extended warranty support contracts.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Capitalized commissions are amortized as sales and marketing expenses over the period that the related revenue is recognized, which can be up to five years for extended warranty. The Company classifies the unamortized portion of deferred commissions as current or noncurrent based on the timing of when the Company expects to recognize the expense. The current and noncurrent portions of deferred commissions are included in &#x201c;Prepaid expenses and other current assets&#x201d; and &#x201c;Other assets,&#x201d; respectively, in the Company&#x2019;s Consolidated Balance Sheets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Deferred Revenue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred revenue results from transactions where the Company billed the customer for products or services and when cash payments are received or due prior to transferring control of the promised goods or services to the customer. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Payment terms to customers typically range from net&#160;30&#160;to net&#160;90&#160;days and vary by the size and location of customer and the products or services offered. The period between the transfer of control of the promised good or service to a customer and when payment is due is not significant.&lt;/span&gt;&lt;/div&gt;</us-gaap:RevenueFromContractWithCustomerPolicyTextBlock>
    <us-gaap:CostOfSalesPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxNDc_a76970ba-3dc1-4fd7-9b43-5fe4ea037de5">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cost of Revenue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cost of revenue consists primarily of finished goods inventory purchased from the Company&#x2019;s contract manufacturers, payroll and related expenses associated with managing the relationships with contract manufacturers, depreciation of manufacturing test equipment, warranty and retrofit costs, excess and obsolete inventory costs, allowances for obligations to its contract manufacturers, shipping charges and amortization of certain intangible assets. It also includes contractor and other costs of services incurred directly related to the delivery of services to customers.&lt;/span&gt;&lt;/div&gt;</us-gaap:CostOfSalesPolicyTextBlock>
    <us-gaap:StandardProductWarrantyPolicy
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxODg_2e6ab482-f0a2-453f-9cab-fbc05983fe04">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Warranty and Retrofit&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company offers limited warranties for its hardware products for a period of &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1NQ_52e60d60-98c1-49fa-aeb6-aa5951b471ac"&gt;one&lt;/span&gt;, &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk1OQ_d86fb7cc-3137-407d-b8ce-6c28a7e598e4"&gt;three&lt;/span&gt; or five years, depending on the product type. The Company recognizes estimated costs related to warranty activities as a component of cost of revenue upon product shipment or upon identification of a specific product failure. Under certain circumstances, the Company also provides fixes on specifically identified performance failures for products that are outside of the standard warranty period and recognizes estimated costs related to retrofit activities as a component of cost of revenue upon identification of such product failures. The Company recognizes estimated warranty and retrofit costs when it is probable that a liability has been incurred and the amount of loss is reasonably estimable. The estimates are based upon historical and projected product failure and claim rates, historical costs incurred in correcting product failures and information available related to any specifically identified product failures. Judgment is required in estimating costs associated with warranty and retrofit activities, and the Company's estimates are limited to information available to the Company at the time of such estimates. In some cases, such as when a specific product failure is first identified or a new product is introduced, the Company may initially have limited information and limited historical failure and claim rates upon which to base its estimates, and such estimates may require revision in future periods. The recorded amount is adjusted from time to time for specifically identified warranty and retrofit exposure. Actual warranty and retrofit expenses are charged against the Company&#x2019;s estimated warranty and retrofit liability when incurred. Factors that affect the Company&#x2019;s warranty and retrofit liability include the number of active installed units and historical and anticipated rates of warranty and retrofit claims and cost per claim.&lt;/span&gt;&lt;/div&gt;</us-gaap:StandardProductWarrantyPolicy>
    <calx:ProductWarrantyPeriod
      contextRef="ib4e76b7a0138479ebec9c577d687f1b3_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfNzk2NQ_2c9b6e62-e772-4f2a-b08d-0ea4358361b3">P5Y</calx:ProductWarrantyPeriod>
    <us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxNTg_949cb16d-3245-405a-9521-34140605a72e">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Stock-Based Compensation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Stock-based compensation expense associated with stock options and purchase rights under the Amended and Restated Employee Stock Purchase Plan (the &#x201c;ESPP&#x201d;) and the Amended and Restated 2017 Nonqualified Employee Stock Purchase Plan (the &#x201c;NQ ESPP&#x201d;) is measured at the grant date based on the fair value of the award and is recognized, net of forfeitures, as expense over the remaining requisite service period (generally the vesting period) on a straight-line basis.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair value of stock option and employee stock purchase right under the ESPP is estimated at the grant date using the Black-Scholes option valuation model. The fair value of the employee stock purchase right under the NQ ESPP is based on closing market price of the Company&#x2019;s common stock on the date of grant.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Stock-based compensation expense associated with performance stock options (&#x201c;PSOs&#x201d;) with graded vesting features and which contain both a performance and a service condition is measured based on fair value of stock options estimated at the grant date using the Black-Scholes option valuation model, and is recognized, net of forfeitures, as expense over the requisite service period using the graded vesting attribution method.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Compensation expense is only recognized if the Company has determined that it is probable that the performance condition will be met. The Company reassesses the probability of vesting at each reporting period and adjusts compensation expense based on its probability assessment.&lt;/span&gt;&lt;/div&gt;</us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy>
    <us-gaap:CommitmentsAndContingenciesPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMzc_5e9a4e76-6b6a-413c-b169-95231d2c477f">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Loss Contingencies&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;From time to time, the Company is involved in legal proceedings arising from the normal course of business activities. The Company evaluates the likelihood of an unfavorable outcome of legal proceedings to which it is a party and accrues a loss contingency when the loss is probable and reasonably estimable. Assessing legal contingencies involves significant judgment and estimates, and the outcome of litigation is inherently uncertain and subject to numerous factors outside the Company&#x2019;s control. Significant judgment is required when the Company assesses the likelihood of any adverse judgments or outcomes, including the potential range of possible losses, and whether losses are probable and reasonably estimable.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Because of uncertainties related to these matters, the Company bases its estimates of whether a loss contingency is probable or reasonably possible, as well as the reasonable range of possible losses associated with each loss contingency, only on the information available at the time. As additional information becomes available, and at least quarterly, the Company reassesses the potential liability on each significant matter and may revise its estimates. These revisions could have a material impact on the Company&#x2019;s business, operating results or financial condition. The actual outcome of these legal proceedings may materially differ from the Company&#x2019;s estimates of potential liability, which could have a material adverse effect on the Company&#x2019;s business, operating results or financial condition.&lt;/span&gt;&lt;/div&gt;</us-gaap:CommitmentsAndContingenciesPolicyTextBlock>
    <us-gaap:ConcentrationRiskCreditRisk
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxNjA_eef3e0d1-a7b5-4a50-9ec1-828351de2f06">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Credit Risk and Inventory Supplier Concentrations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Financial instruments that potentially subject the Company to significant concentrations of credit risk consist primarily of cash, cash equivalents, marketable securities and accounts receivable. Cash equivalents consist of money market funds and marketable securities with a maturity at the date of purchase of ninety days or less, which are invested through financial institutions in the United States. Deposits in and investments held by these financial institutions may, at times, exceed federally insured limits. The Company has not experienced any losses in such accounts. The Company also has approximately $2.7 million of cash held by its foreign subsidiaries in India, China and the United Kingdom. Management believes that the financial institutions that hold the Company&#x2019;s cash and cash equivalents are financially sound and, accordingly, minimal credit risk exists with respect to these cash and cash equivalents.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company depends primarily on a small number of outside contract manufacturers (&#x201c;CMs&#x201d;) and original design manufacturers (&#x201c;ODMs&#x201d;) for the bulk of its finished goods inventory. The Company generally purchases its products through purchase orders with its suppliers. While the Company seeks to maintain a sufficient supply of its products, the Company&#x2019;s business and results of operations could be adversely affected by a stoppage or delay in receiving such products, the receipt of defective parts, an increase in price of such products or the Company&#x2019;s inability to obtain lower prices from its CMs, ODMs and other suppliers in response to competitive pressures.&lt;/span&gt;&lt;/div&gt;</us-gaap:ConcentrationRiskCreditRisk>
    <us-gaap:Cash
      contextRef="i11ca9800e83c4a9fac73cab090bae62c_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMTM1OTY_4a368c16-f801-4442-b832-bba031093e30"
      unitRef="usd">2700000</us-gaap:Cash>
    <us-gaap:FairValueOfFinancialInstrumentsPolicy
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMDU_c28363bf-e92e-4d13-8284-946ea8a3961d">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Fair Value of Financial Instruments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The carrying amounts of cash and cash equivalents, trade receivables, accounts payable and other accrued liabilities approximate their fair value due to their relatively short-term nature. Marketable securities are valued using quoted market prices in active markets to determine fair value.&lt;/span&gt;&lt;/div&gt;</us-gaap:FairValueOfFinancialInstrumentsPolicy>
    <calx:CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxNzY_16787183-a7e2-4b5a-b60a-fbc677958861">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cash, Cash Equivalents and Marketable Securities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash equivalents and marketable securities are stated at amounts that approximate fair value based on quoted market prices.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company has invested its excess cash primarily in money market funds and highly liquid marketable securities such as U.S. treasury securities, corporate debt instruments, commercial paper and U.S. government securities. The Company considers all investments with maturities of three months or less when purchased to be cash equivalents. Marketable securities represent highly liquid U.S. treasury securities, corporate debt instruments, commercial paper and U.S. government securities with maturities greater than 90 days at date of purchase. Marketable securities with maturities greater than one year are classified as current because management considers all marketable securities to be available for current operations.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s investments have been classified and accounted for as available-for-sale. Such investments are recorded at fair value and unrealized holding gains and losses are reported as a separate component of comprehensive loss in the stockholders&#x2019; equity until realized. Realized gains and losses on sales of marketable securities, if any, are determined on the specific identification method and are reclassified from accumulated other comprehensive loss to results of operations as &#x201c;Other income (expense), net.&#x201d; Realized gains and losses were not significant for the years ended December&#160;31, 2022 and 2021, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For the Company&#x2019;s available-for-sale debt securities in an unrealized loss position, the Company determines whether a credit loss exists. In this assessment, among other factors, the Company considers the extent to which the fair value is less than the amortized cost, any changes to the rating of the security by a rating agency, and adverse conditions specifically related to the security. If factors indicate a credit loss exists, an allowance for credit loss will be recorded to &#x201c;Other income (expense), net,&#x201d; limited by the amount that the fair value is less than the amortized cost basis. The amount of fair value change relating to all other factors will be recognized in other comprehensive loss.&lt;/span&gt;&lt;/div&gt;</calx:CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock>
    <us-gaap:ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMjY_f7ab37ed-d766-4c07-b871-d92c8887e1e9">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Allowance for Doubtful Accounts&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company maintains an allowance for doubtful accounts for expected credit losses at contract inception resulting from the inability of its customers to make required payments. The Company records a specific allowance and revises the expected loss based on an analysis of individual past-due balances. Additionally, based on historical write-offs and the Company&#x2019;s collection experience, the Company records an additional allowance based on a percentage of outstanding receivables. The Company performs credit evaluations of its customers&#x2019; financial condition. These evaluations require judgment and are based on a variety of factors including, but not limited to, current economic trends, payment history and a financial review of the customer. Actual collection losses may differ from management&#x2019;s estimates, and such differences could be material to the Company's financial position and results of operations.&lt;/span&gt;&lt;/div&gt;</us-gaap:ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy>
    <us-gaap:InventoryPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMjc_34a6c53a-16f6-4c11-bde9-febc96c5d855">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Inventory Valuation and Supplier Purchase Commitments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventory, which primarily consists of finished goods purchased from CMs or ODMs, is stated at the lower of cost (determined by the first-in, first-out method) or market value. Inbound shipping costs and U.S. tariffs are included in cost of inventory. In &lt;/span&gt;&lt;/div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;addition, from time to time, the Company procures component inventory primarily as a result of manufacturing discontinuation of critical components by suppliers. The Company regularly monitors inventory quantities on hand and records write-downs for excess and obsolete inventories based on the Company&#x2019;s estimate of demand for its products, potential obsolescence of technology, product life cycles and whether pricing trends or forecasts indicate that the carrying value of inventory exceeds its estimated selling price. The Company also evaluates its supplier purchase commitments, which have increased significantly due to extended lead-times in the current supply chain environment, and records a liability for excess and obsolete components based on its estimated demand of our products, potential obsolescence of technology and product life cycles.&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt; &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;These factors are impacted by market and economic conditions, technology changes and new product introductions and require significant estimates that may include elements that are uncertain. Actual demand may differ from forecasted demand and may have a material effect on gross profit. If inventory is written down, a new cost basis is established that cannot be increased in future periods. Shipments from suppliers before the Company receives them are recorded as in-transit inventory when title and the significant risks and rewards of ownership have passed to the Company.&lt;/span&gt;</us-gaap:InventoryPolicyTextBlock>
    <us-gaap:CapitalizedContractCostAmortizationPeriod
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjAxMTk_7539e90f-8525-40c2-aa70-2b2926f33c2c">P5Y</us-gaap:CapitalizedContractCostAmortizationPeriod>
    <us-gaap:PropertyPlantAndEquipmentPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYyMTA_c32774a8-7241-48bc-ba36-4d3159f82be5">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Property and Equipment&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property and equipment are stated at cost, less accumulated depreciation, and are depreciated using the straight-line method over the estimated useful life of each asset. Generally, computer equipment is depreciated over two years; purchased software is depreciated over &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4MDI_2e01504e-91d5-45fd-890f-25b987875d7a"&gt;three&lt;/span&gt; to five years; test equipment is depreciated over three years; furniture and fixtures are depreciated over seven years; and leasehold improvements are depreciated over the shorter of the respective lease term or the estimated useful life of the asset. Maintenance and repairs are charged to expense as incurred.&lt;/span&gt;&lt;/div&gt;</us-gaap:PropertyPlantAndEquipmentPolicyTextBlock>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i7ad4ad7c154840f4bae9ab60b925baa2_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA3NTk_49b4f4b7-e707-4743-b62c-4ae2c11ccc4a">P2Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i83e79e5ca7b146d28600c379569850f6_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4MDg_f82d4378-ca87-4317-91e6-641a1cb279e0">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="ic399c58a2c1a45bd84aaa9618f98d9e8_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4NDc_e707f8d0-470d-4ee8-a22b-7c8f9a529e79">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i0bf6d605c909425e9b0bbeda75e84492_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjA4OTU_a09a2670-eebb-48fb-a281-89f79da1269b">P7Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMDg_adf27f2a-55a0-4fc2-bff7-d71a10d8ef6f">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Goodwill&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Goodwill was recorded as a result of the Company&#x2019;s acquisitions of Occam Networks, Inc. in February 2011 and Optical Solutions, Inc. in February 2006. The Company records goodwill when consideration paid in a business acquisition exceeds the fair value of the net tangible assets and the identified intangible assets acquired. Goodwill is not amortized but instead is subject to an annual impairment test or more frequently if events or changes in circumstances indicate that it may be impaired. The Company evaluates goodwill on an annual basis as of the end of the second quarter of each fiscal year. Management has determined that it operates as a single reporting unit and, therefore, evaluates goodwill impairment at the enterprise level.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At the end of the second quarter of 2022, the Company completed its annual goodwill impairment test. Based on its assessment of certain qualitative factors such as market capitalization, management concluded that the fair value of the Company was more likely than not greater than its carrying amount as of July 2, 2022. As such, it was not necessary to perform the two-step quantitative goodwill impairment test at the time.&lt;/span&gt;&lt;/div&gt;</us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy>
    <us-gaap:GoodwillImpairmentLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjI1MTE_d9706ccc-3a6b-471a-9188-f63e4a02c94f"
      unitRef="usd">0</us-gaap:GoodwillImpairmentLoss>
    <us-gaap:GoodwillImpairmentLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjI1MTE_e820f773-dffa-418d-887c-fb5666891961"
      unitRef="usd">0</us-gaap:GoodwillImpairmentLoss>
    <us-gaap:GoodwillImpairmentLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjI1MTE_fc62e23c-97f6-4613-aa5c-4c959f352a2e"
      unitRef="usd">0</us-gaap:GoodwillImpairmentLoss>
    <us-gaap:IncomeTaxPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMzU_8676dc4b-09b7-4409-9149-51e359d381ed">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Income Taxes&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company evaluates its tax positions and estimates its current tax exposure along with assessing temporary differences that result from different book to tax treatment of items not currently deductible for tax purposes. These differences result in deferred tax assets and liabilities on the Company&#x2019;s Consolidated Balance Sheets, which are estimated based upon the &lt;/span&gt;&lt;/div&gt;difference between the financial statement and tax bases of assets and liabilities using the enacted tax rates that will be in effect when these differences reverse. In general, deferred tax assets represent future tax benefits to be received when certain expenses previously recognized in the Company&#x2019;s Consolidated Statements of Comprehensive Income become deductible expenses under applicable income tax laws or loss or credit carryforwards are utilized. Accordingly, realization of the Company&#x2019;s deferred tax assets is dependent on future taxable income against which these deductions, losses and credits can be utilized.The Company must assess the likelihood that deferred tax assets will be recovered from future taxable income, and if the Company determines that recovery is not more likely than not, the Company must establish a valuation allowance. Management judgment is required in determining its provision for income taxes, deferred tax assets and liabilities and any valuation allowance recorded against its net deferred tax assets. In the third quarter of 2021, the Company reversed the majority of its valuation allowance and recorded on its balance sheet U.S. federal and certain state deferred tax assets of $162.0&#160;million. As of December 31, 2022, the Company determined that positive evidence continues to outweigh negative evidence and concluded that it was more likely than not that its U.S. federal and state (with the exception of California) deferred tax assets are realizable.</us-gaap:IncomeTaxPolicyTextBlock>
    <us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="if54b7cb1441945f288166b95742d4e04_D20210704-20211002"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMTA5OTUxMTY3Mzk2Ng_41502837-ce1e-4d3d-9c8f-147a8ca31b8f"
      unitRef="usd">162000000</us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjU2OTA_3c9c5eb9-f371-4924-9f36-b983e2ab9013"
      unitRef="usd">29900000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184Mi9mcmFnOjJhNjRiZmMyYWVmYTQxM2JhOTUzNGQyNjg4NGFkM2NlL3RleHRyZWdpb246MmE2NGJmYzJhZWZhNDEzYmE5NTM0ZDI2ODg0YWQzY2VfMjYxMTk_8884b72c-fa71-4d8c-9a1c-d09a4086993a">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Newly Adopted Accounting Standards&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company did not adopt any new accounting standards in 2022 that were significant to the Company.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Recent Accounting Pronouncements Not Yet Adopted&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;There have been no accounting pronouncements or changes in accounting pronouncements that are significant or potentially significant to the Company.&lt;/span&gt;&lt;/div&gt;</us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock>
    <us-gaap:CashCashEquivalentsAndMarketableSecuritiesTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RleHRyZWdpb246YzE4NTU1MTFhYTgzNGU0NWEyYzg1MzUxMzE3NGE3NWNfNDY3_59ad6bf5-d3db-4926-974f-bbb87138a8d6">Cash, Cash Equivalents and Marketable Securities&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash, cash equivalents and marketable securities consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-indent:22.5pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-indent:22.5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:95.467%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.172%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.484%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.079%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.484%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Cash and cash equivalents:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Cash&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;39,189&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;26,442&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;33,199&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,582&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,990&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,320&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;140&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;989&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total cash and cash equivalents&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;79,073&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;51,333&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Marketable securities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;106,750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;60,279&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;28,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;80,812&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,168&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,576&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total marketable securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;162,642&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;153,002&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;241,715&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;204,335&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The carrying amounts of the Company&#x2019;s money market funds approximate their fair values due to their nature, duration and short maturities. As of December&#160;31, 2022, all marketable securities were due in two years or less.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amortized cost and fair value of marketable securities as of December&#160;31, 2022 were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:7pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:45.245%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.139%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.554%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.554%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.838%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Unrealized Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;114,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,379)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;112,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,262&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(71)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,876&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(244)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,312&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,308&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;101&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total marketable securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;203,670&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,699)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;201,971&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:7pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Unrealized gains and losses were not significant as of December&#160;31, 2021.&lt;/span&gt;&lt;/div&gt;</us-gaap:CashCashEquivalentsAndMarketableSecuritiesTextBlock>
    <us-gaap:ScheduleOfCashAndCashEquivalentsTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RleHRyZWdpb246YzE4NTU1MTFhYTgzNGU0NWEyYzg1MzUxMzE3NGE3NWNfNDc0_45815ac6-0cb8-4a75-95d0-24d95810c345">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash, cash equivalents and marketable securities consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-indent:22.5pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-indent:22.5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:95.467%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.172%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.484%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.079%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.484%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Cash and cash equivalents:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Cash&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;39,189&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;26,442&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;33,199&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,582&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,990&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,320&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;140&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;989&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total cash and cash equivalents&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;79,073&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;51,333&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Marketable securities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;106,750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;60,279&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;28,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;80,812&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,168&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,576&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total marketable securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;162,642&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;153,002&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;241,715&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;204,335&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfCashAndCashEquivalentsTableTextBlock>
    <us-gaap:Cash
      contextRef="ic38a86a38cbb476798e3dd19d71ee36d_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMy0yLTEtMS0zNjE5OA_a30725dd-3576-4857-87be-4442f352b496"
      unitRef="usd">39189000</us-gaap:Cash>
    <us-gaap:Cash
      contextRef="ic6740d270bd44d0183c169758c4ea62d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMy00LTEtMS0zNjE5OA_bccae277-8f85-4e3a-9e26-9e198d1a9a7f"
      unitRef="usd">26442000</us-gaap:Cash>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i0f4b83625a934f8ca3fe1b1ca19c4b55_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNC0yLTEtMS0zNjE5OA_773c5d62-cae7-4346-8057-d2120fdaaa23"
      unitRef="usd">33199000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i673cc06359884f75af7187294e97424c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNC00LTEtMS0zNjE5OA_a9287ffc-362c-4f41-8649-4903a77ea25c"
      unitRef="usd">21582000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="ied4eb127f8c34de9ab8ee8c6d45c70d5_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNS0yLTEtMS0zNjE5OA_86f8472f-ae67-4963-9fc8-a7de153f9214"
      unitRef="usd">5990000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i664d2390333c48adb557984dce1aa6e2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNS00LTEtMS0zNjE5OA_892bc834-12f5-4526-87fa-17a52628ff6b"
      unitRef="usd">0</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i9c5831145c9248d6abebe6d6cef1287a_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNi0yLTEtMS0zNjE5OA_34d0342a-de68-4405-b12a-9ad13da500ad"
      unitRef="usd">555000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i09a1c858595a4a30a3c15e60909e366e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNi00LTEtMS0zNjE5OA_f70449bb-40e6-427a-a433-7b3ed8602d81"
      unitRef="usd">2320000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i7e64a1001c8149bcaa2a5d6d9cb3384f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNy0yLTEtMS0zNjE5OA_6bfc067b-040a-4225-8a4f-46022bd6e416"
      unitRef="usd">140000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i535c7a70b8a942c79affe1727d7ae52b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfNy00LTEtMS0zNjE5OA_91421ed6-a11a-4a54-b240-56a55902c1ad"
      unitRef="usd">989000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfOC0yLTEtMS0zNjE5OA_3ede234e-2da3-4431-81d0-0be1728faa10"
      unitRef="usd">79073000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfOC00LTEtMS0zNjE5OA_68303176-3a9a-424e-8250-08a2c9b1ec19"
      unitRef="usd">51333000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="iae1efd6e91be43c984f2ec4c782de70d_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTAtMi0xLTEtMzYxOTg_637230b3-3a6d-4ed7-8757-08194108b603"
      unitRef="usd">106750000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i3333828445aa4fb99c0ed582b56ad206_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTAtNC0xLTEtMzYxOTg_ccf55a9f-88df-4d08-a71a-4731f424bfd9"
      unitRef="usd">60279000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="ic16ba641b2084da4b404a37dcb45e256_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTEtMi0xLTEtMzYxOTg_291eabc7-ed07-470b-8ae3-1a364be7fc84"
      unitRef="usd">28992000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i5b99835257004211b4a068dd960dc899_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTEtNC0xLTEtMzYxOTg_c430d6ee-c4d2-4c00-bb7d-e33f5fed6328"
      unitRef="usd">80812000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i820b02ffde9349fb97eb0f64a6f6c7e9_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTItMi0xLTEtMzYxOTg_b20bd8f4-2bfc-4ad2-b6c3-a63517225438"
      unitRef="usd">23632000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i949c87eb081c4441b7e851734c228f84_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTItNC0xLTEtMzYxOTg_05cd3d62-03c7-4c8f-a011-21a34dccde33"
      unitRef="usd">5527000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i6d7b2ffce6be4b6fa0bb526a979535d0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTMtMi0xLTEtMzYxOTg_5eda196f-f45f-4a18-b5c0-b9ed6d596944"
      unitRef="usd">3168000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i0a565c8b23bc4d09a1f297fb9bed6d2e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTMtNC0xLTEtMzYxOTg_525d3ceb-126d-4283-acb3-93a7bbf37499"
      unitRef="usd">3576000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i744cd44f39884a5a9e7c494e807de46d_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTQtMi0xLTEtMzYxOTg_616c1a0c-5e2e-4029-a2ae-5ce71d43bb4a"
      unitRef="usd">100000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i4793b5e7b36744d0b452f2f9832d9099_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTQtNC0xLTEtMzYxOTg_fd0d4418-ee73-4578-9c58-3384ac303957"
      unitRef="usd">2808000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTUtMi0xLTEtMzYxOTg_acff2460-1561-4675-80a6-4d54f0b2017d"
      unitRef="usd">162642000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTUtNC0xLTEtMzYxOTg_2477a1e8-2fca-4471-b2f6-748a579a86a7"
      unitRef="usd">153002000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <calx:CashCashEquivalentsAndMarketableSecurities
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTYtMi0xLTEtMzYxOTg_3fd67eec-82b9-415f-8032-dd160f72396a"
      unitRef="usd">241715000</calx:CashCashEquivalentsAndMarketableSecurities>
    <calx:CashCashEquivalentsAndMarketableSecurities
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjhjYTM3MWQ5ODUzNjRlYjVhMDlkNzg0MjQ4NTc5MjNkL3RhYmxlcmFuZ2U6OGNhMzcxZDk4NTM2NGViNWEwOWQ3ODQyNDg1NzkyM2RfMTYtNC0xLTEtMzYxOTg_394a5ece-7f3b-4036-9adc-ff53e14da320"
      unitRef="usd">204335000</calx:CashCashEquivalentsAndMarketableSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleTerm
      contextRef="ibcead81fc3df41b3a1cf1e698b490bdc_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RleHRyZWdpb246YzE4NTU1MTFhYTgzNGU0NWEyYzg1MzUxMzE3NGE3NWNfMTA5OTUxMTYyODI2MA_0534fd95-142a-4fd9-9101-e488ebfd274d">P2Y</us-gaap:DebtSecuritiesAvailableForSaleTerm>
    <us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RleHRyZWdpb246YzE4NTU1MTFhYTgzNGU0NWEyYzg1MzUxMzE3NGE3NWNfMTA5OTUxMTYyODU0Nw_5a77a612-c40b-4584-9dd9-1293381f749a">&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amortized cost and fair value of marketable securities as of December&#160;31, 2022 were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:7pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:45.245%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.139%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.554%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.554%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.838%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Unrealized Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;114,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,379)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;112,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,262&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(71)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,876&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(244)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,312&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,308&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;101&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total marketable securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;203,670&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,699)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;201,971&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent
      contextRef="i48c13f271a7048a49e9f93bc547075a0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMS0yLTEtMS0zOTY1Mw_5f4b188d-5389-4da6-99f5-9f647ac773e8"
      unitRef="usd">114119000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i48c13f271a7048a49e9f93bc547075a0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMS00LTEtMS0zOTY1Mw_b235b2ec-bca0-4fdb-a297-9b067fa72e32"
      unitRef="usd">1379000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i48c13f271a7048a49e9f93bc547075a0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMS02LTEtMS0zOTY1Mw_b0d0f227-eb1b-4742-a8a7-fde62bd70ddf"
      unitRef="usd">112740000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent
      contextRef="i83fd5d90fe6b4285bab023841c3a14b0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMi0yLTEtMS0zOTY1Mw_3bbc7123-2dec-4880-bb0b-1a547d98c57a"
      unitRef="usd">62262000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i83fd5d90fe6b4285bab023841c3a14b0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMi00LTEtMS0zOTY1Mw_03802489-a411-4f0c-a5c1-453b99f84247"
      unitRef="usd">71000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i83fd5d90fe6b4285bab023841c3a14b0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMi02LTEtMS0zOTY1Mw_4a2b7412-9697-4dec-9ead-10400cadb0e7"
      unitRef="usd">62191000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent
      contextRef="i86f4de24126640ba8b71657febb828f0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMy0yLTEtMS0zOTY1Mw_121baf3a-588d-4a4b-a963-814fe98b0189"
      unitRef="usd">23876000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i86f4de24126640ba8b71657febb828f0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMy00LTEtMS0zOTY1Mw_510c457e-2023-4744-b4d3-6ddbe0703397"
      unitRef="usd">244000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i86f4de24126640ba8b71657febb828f0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfMy02LTEtMS0zOTY1Mw_3f1a6222-3dc5-4777-ba7d-fb1fd311b1d3"
      unitRef="usd">23632000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent
      contextRef="icd24b2de72464d3ba30d3ad07a4e56cd_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNC0yLTEtMS0zOTY1Mw_14436529-b17d-4169-a9a4-1405b78e7e6b"
      unitRef="usd">3312000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="icd24b2de72464d3ba30d3ad07a4e56cd_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNC00LTEtMS0zOTY1Mw_bc8976cf-34ed-4da9-a280-ebefa4052bfe"
      unitRef="usd">4000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="icd24b2de72464d3ba30d3ad07a4e56cd_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNC02LTEtMS0zOTY1Mw_bac39c6c-afe2-4551-814d-3632b9c15e4a"
      unitRef="usd">3308000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent
      contextRef="i2c3a8629b4304f7eb5ca0f3daa147a20_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNS0yLTEtMS0zOTY1Mw_d4069bfc-cd33-4710-b002-1d1fb6572a7c"
      unitRef="usd">101000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i2c3a8629b4304f7eb5ca0f3daa147a20_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNS00LTEtMS0zOTY1Mw_4685692e-6431-487a-b871-525c690d3e5f"
      unitRef="usd">1000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i2c3a8629b4304f7eb5ca0f3daa147a20_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNS02LTEtMS0zOTY1Mw_aa96b23d-d83a-4ea6-84d1-9400df834f34"
      unitRef="usd">100000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent
      contextRef="ic3ce6d215fd045b89989818cac3c19c7_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNi0yLTEtMS0zOTY1Mw_daa8454d-c450-4498-a230-f7c6220150d8"
      unitRef="usd">203670000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="ic3ce6d215fd045b89989818cac3c19c7_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNi00LTEtMS0zOTY1Mw_90903a94-a09a-4ab5-8bc9-9b5b26557c12"
      unitRef="usd">1699000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="ic3ce6d215fd045b89989818cac3c19c7_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184NS9mcmFnOmMxODU1NTExYWE4MzRlNDVhMmM4NTM1MTMxNzRhNzVjL3RhYmxlOjU1M2Y0ODhmNDQzYTQ3NjA4YmYyYWJkN2Q0Y2RiY2Y5L3RhYmxlcmFuZ2U6NTUzZjQ4OGY0NDNhNDc2MDhiZjJhYmQ3ZDRjZGJjZjlfNi02LTEtMS0zOTY1Mw_1af834ea-5cd1-4b43-9428-1ea658fcb1df"
      unitRef="usd">201971000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:FairValueDisclosuresTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RleHRyZWdpb246ZDBlY2YwNGVkNzYxNDdmZWIwMDRhMjI4ODMwN2I4M2JfMTYxMA_d171caaf-8950-46d0-a03e-b570772648fa">Fair Value Measurements&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company measures its cash equivalents and marketable securities at fair value on a recurring basis. Fair value is an exit price, representing the amount that would be received to sell an asset or paid to transfer a liability in an orderly transaction between market participants. As such, fair value is a market-based measurement that should be determined based on assumptions that market participants would use in pricing an asset or liability. The Company utilizes the following three-tier value hierarchy which prioritizes the inputs used in measuring fair value:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;padding-left:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Level 1 &#x2013; Observable inputs that reflect quoted prices (unadjusted) for identical assets or liabilities in active markets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;padding-left:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Level 2 &#x2013; Observable inputs other than quoted prices included in Level 1 for similar instruments in active markets, quoted prices for identical or similar instruments in markets that are not active, and model-driven valuations in which all significant inputs and significant value drivers are observable in active markets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;padding-left:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Level 3 &#x2013; Unobservable inputs to the valuation derived from fair valuation techniques in which one or more significant inputs or significant value drivers are unobservable. The fair value hierarchy also requires the Company to maximize the use of observable inputs, when available, and to minimize the use of unobservable inputs when determining inputs and determining fair value.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following tables sets forth the Company&#x2019;s financial assets measured at fair value on a recurring basis based on the three-tier fair value hierarchy (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.575%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;As of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 2&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;112,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;112,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,308&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,308&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;113,295&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;89,231&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;202,526&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.575%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;As of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 2&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,320&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,320&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;60,279&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;60,279&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;102,394&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;102,394&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,565&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,565&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,599&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;115,294&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;177,893&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:FairValueDisclosuresTextBlock>
    <us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RleHRyZWdpb246ZDBlY2YwNGVkNzYxNDdmZWIwMDRhMjI4ODMwN2I4M2JfMTYwMw_7052f650-cb05-4e85-ae32-27484fb20bf4">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following tables sets forth the Company&#x2019;s financial assets measured at fair value on a recurring basis based on the three-tier fair value hierarchy (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.575%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;As of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 2&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;112,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;112,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,308&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,308&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;113,295&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;89,231&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;202,526&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.835%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.572%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.823%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.575%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;As of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Level 2&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,320&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,320&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;60,279&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;60,279&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Commercial paper&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;102,394&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;102,394&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;U.S. government agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Corporate debt securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,565&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,565&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Municipal securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,599&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;115,294&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;177,893&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="ib4730c11d033405ab26535a7d5d1902a_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMS0xLTEtMS0zNjE5OA_728c37a0-b55b-45f6-aec2-7bab7b9b26d6"
      unitRef="usd">555000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i4e5e68f096524db3a6c5289a50bd1e54_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMS0zLTEtMS0zNjE5OA_27467ddc-3529-4818-a91e-0b63460b996b"
      unitRef="usd">0</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i0ab466283f8f4102886a538b89828f49_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMS01LTEtMS0zNjE5OA_7cc0dfd5-fb70-485a-85d5-368c35b8b665"
      unitRef="usd">555000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i68862cb4af34489a821a714a84d59703_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMi0xLTEtMS0zNjE5OA_46b180c7-a912-4c7e-817a-dafb59fbb09e"
      unitRef="usd">112740000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="iec2cc538fb224ec88a4f3b699672a078_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMi0zLTEtMS0zNjE5OA_0e18920b-756e-4d06-9cd3-f2823673e419"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i056a524a4298478b90de1f1a23ee2241_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMi01LTEtMS0zNjE5OA_76f91625-11e9-4c7f-bbf7-3beb76a24398"
      unitRef="usd">112740000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i67913f8a27bc47f1be4f5522a875439a_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMy0xLTEtMS0zNjE5OA_4d1c6726-712e-4e9b-9f59-19b54cebb6a9"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="id840696585cf4c0d85ed3042e75c8d4f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMy0zLTEtMS0zNjE5OA_19eced96-c13c-4c7f-8135-9cc533e02a35"
      unitRef="usd">62191000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="iebc70d6cc46241e39e116d70f0745b5e_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfMy01LTEtMS0zNjE5OA_a96114b1-e34f-419f-bd26-8b1ccca43b18"
      unitRef="usd">62191000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="ic8e53431a0164b19b6fd5952ecd4356d_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNC0xLTEtMS0zNjE5OA_78372087-66e1-478f-8cf3-eb3e2897d3c4"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i20829567e15d4e138a070a1d2bd1f296_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNC0zLTEtMS0zNjE5OA_967ab089-d83c-4188-b771-f620f75b7ec6"
      unitRef="usd">23632000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i952170666232494785ca17ec4b0f402f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNC01LTEtMS0zNjE5OA_6a4ec524-813b-438e-a9ce-ef794365dfe8"
      unitRef="usd">23632000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="iedb70c0486cf430c999ecb779842f9b7_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNS0xLTEtMS0zNjE5OA_29729dd8-08fd-4656-a64d-7e01e0f0c632"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i03feb03d4b1948faa67282c5f94b8b9f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNS0zLTEtMS0zNjE5OA_10a28d63-44f0-44cf-92e6-3323d527d4e6"
      unitRef="usd">3308000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="iec5c97ff467a498191966be3f6fe21e2_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNS01LTEtMS0zNjE5OA_4454e868-eef1-4623-a80b-188c14c97936"
      unitRef="usd">3308000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i845d08c05ade4329a7d34e722a2a29ee_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNi0xLTEtMS0zNjE5OA_f36014c5-8f4f-428b-8c52-134ef399d57c"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="icbb5af7610094c1ea043d7757229aea7_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNi0zLTEtMS0zNjE5OA_acf547e5-102e-4d0b-a80a-3d7bba7cad30"
      unitRef="usd">100000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i57af706ebf9c4dcfbc3ae9b3887ece24_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNi01LTEtMS0zNjE5OA_40d6f78a-01b8-4340-b950-6460ef56fb25"
      unitRef="usd">100000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="ia446f035a91b4e8cbc5dfb2943bf38cc_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNy0xLTEtMS0zNjE5OA_b92f320c-2618-4893-94d5-291d5c83a1d7"
      unitRef="usd">113295000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i04a13de45df2495e910c5650860ee7ae_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNy0zLTEtMS0zNjE5OA_8297edfa-2d42-4524-9173-316a8fd44738"
      unitRef="usd">89231000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="ibcbd3e4469a449f7b3a0e404714fbb82_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOmUzYjgxZTg2ZDhhMDQzYmI5MzQ3NjU4ZTg2YzYyMzJkL3RhYmxlcmFuZ2U6ZTNiODFlODZkOGEwNDNiYjkzNDc2NThlODZjNjIzMmRfNy01LTEtMS0zNjE5OA_a149db54-0424-4877-976e-521ed6cd2396"
      unitRef="usd">202526000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="i92547be2d4ec4c2fbe99b417670a0c1b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMS0xLTEtMS0zOTY2MQ_31e10d8b-8283-4da2-b6f6-fcbf73435d07"
      unitRef="usd">2320000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="ie5b3737f696b45309b05ec8486ef71e8_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMS0zLTEtMS0zOTY2MQ_405a6500-0e03-460a-b39b-ab3d4c715888"
      unitRef="usd">0</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:CashEquivalentsAtCarryingValue
      contextRef="iffabf941f6c24db2bf8711334e47cbaf_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMS01LTEtMS0zOTY2MQ_f326f811-a5bd-49bf-bc56-2db9238bce2e"
      unitRef="usd">2320000</us-gaap:CashEquivalentsAtCarryingValue>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i17b34b27f19945deb8a3001fdb72bef4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMi0xLTEtMS0zOTY2MQ_8b1b9f47-0dc7-4d85-b9cd-021345a0ee0b"
      unitRef="usd">60279000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i3b2a3664f2194292821239b94d9d12d5_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMi0zLTEtMS0zOTY2MQ_2c314ebf-742b-46ec-8229-81284fdcd242"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i2e365a49d2204d5eb34750b7781343b9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMi01LTEtMS0zOTY2MQ_265cea21-b62d-482a-979d-728fe6c1c5dc"
      unitRef="usd">60279000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="if31b6a989a394506af109a221346eb6d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMy0xLTEtMS0zOTY2MQ_59874a60-48d6-42f0-aabf-762fc9b36fad"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i17abd99a86944a3faf931f3eee82c2c4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMy0zLTEtMS0zOTY2MQ_3bcc44fd-f837-4bb0-b22a-0692d1340539"
      unitRef="usd">102394000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i3ebca95019264ed79a51ec6974672638_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfMy01LTEtMS0zOTY2MQ_b59034a7-e85f-4b89-ab23-5cb362927ce7"
      unitRef="usd">102394000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="if01ab496558d41afab2522673093c772_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNC0xLTEtMS0zOTY2MQ_0adc0356-b7a6-4e6e-907f-7d594a874d47"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="ifac485b7e7d44598b822d573869dfc8f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNC0zLTEtMS0zOTY2MQ_cfbd7e79-c783-47a7-8fe0-58671912e604"
      unitRef="usd">5527000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i682285ed68dc42ae833aa59cfbd46465_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNC01LTEtMS0zOTY2MQ_d23fe273-3c01-47e9-b5ab-e636ad6d6fbd"
      unitRef="usd">5527000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="ifa934a3e48ab4d279f8356602465981e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNS0xLTEtMS0zOTY2MQ_1564cec7-cba3-422a-99b5-82b7952e7598"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="ib755630aec6046029d3ebd796781b082_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNS0zLTEtMS0zOTY2MQ_b613d0d9-f52d-4731-8ed1-f0af31e29e29"
      unitRef="usd">4565000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i1e4012789050403a8f1ba4ae649dc645_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNS01LTEtMS0zOTY2MQ_e94fdad5-3b46-409e-b4aa-effdf06fa6d3"
      unitRef="usd">4565000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="ib9efcd417c244b0da39cf058581c135d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNi0xLTEtMS0zOTY2MQ_8e02abcf-e35a-4c44-9f01-2eff51b9feb8"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="id5bc9fe6b44f485ea9b213709ae25a11_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNi0zLTEtMS0zOTY2MQ_c64961a6-2fa3-4040-9459-d6c769fd9fce"
      unitRef="usd">2808000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i189b4703619e4017b1fab65dbc717051_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNi01LTEtMS0zOTY2MQ_9384108b-9072-42fb-b59b-bf130c372afb"
      unitRef="usd">2808000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i73bf3f7d4a2e494896bee43a0d38e4ca_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNy0xLTEtMS0zOTY2MQ_0330fdf4-5b00-4a53-830f-9adbd805f787"
      unitRef="usd">62599000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="id818e7cab6a34ee78d221eeb25506d00_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNy0zLTEtMS0zOTY2MQ_72e84002-18e4-4b6a-946d-6ecad8a710e3"
      unitRef="usd">115294000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="ic5caa568a0ce4d57a7e0f3c3a88488d8_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM184OC9mcmFnOmQwZWNmMDRlZDc2MTQ3ZmViMDA0YTIyODgzMDdiODNiL3RhYmxlOjlkYmM2MmQxNGM2OTQ0Mzg4ODM0YTQ5ZTk3NTc1NzYzL3RhYmxlcmFuZ2U6OWRiYzYyZDE0YzY5NDQzODg4MzRhNDllOTc1NzU3NjNfNy01LTEtMS0zOTY2MQ_456b5be3-a8cf-49ea-853e-6f6bb6458232"
      unitRef="usd">177893000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:SupplementalBalanceSheetDisclosuresTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ3MQ_fa55b3ed-4e25-4e5a-966b-6d9a453ff14f">Balance Sheet Details&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accounts receivable, net consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:98.538%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.380%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.432%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.027%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.432%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.029%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Accounts receivable&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;94,201&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;85,944&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(397)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(725)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;93,804&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;85,219&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The table below summarizes the changes in allowance for doubtful accounts and product return liability for the periods indicated (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.076%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:46.490%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.345%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.345%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.345%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.351%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Balance at Beginning of Year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Additions Charged to Expenses or Revenue Net of Recoveries&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Write Offs and Returns&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Balance at &lt;br/&gt;End of Year&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2022:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;725&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(276)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(52)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;397&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product return liability&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,836&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,622&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4,497)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,961&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2021:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,405&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(201)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(479)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;725&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product return liability&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,888&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,681&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(3,733)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,836&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2020:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;374&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,085&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(54)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,405&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product return liability&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;919&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,391&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,422)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,888&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventory consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.035%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.178%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.179%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Raw materials&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;640&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;130&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Finished goods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;148,520&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;88,750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;149,160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;88,880&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:7pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Prepaid expenses and other current assets consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.750%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.828%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.830%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Supplier deposits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;39,064&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,627&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;24,620&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,691&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;30,811&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property and equipment, net consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.035%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.178%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.179%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Test equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;44,106&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;39,476&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Computer equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,396&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,156&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Software&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,389&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,013&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Leasehold improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,730&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,351&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,153&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,812&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;70,774&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Accumulated depreciation and amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(44,940)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(41,025)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,834&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,783&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:7pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Depreciation and amortization expenses were&#160;$14.3 million, $15.0 million and&#160;$13.7 million for the years ended December&#160;31, 2022, 2021 and 2020, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Other long-term assets consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.750%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.828%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.830%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Intangible asset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,253&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,885&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other long-term assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;14,889&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19,142&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,685&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:7pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Intangible Asset Acquisition&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:7pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In March 2018, and as amended in December 2020, the Company entered into an agreement with a vendor to develop a certain software product and related enhancements pursuant to which the Company is obligated to make revenue-share payments under the program, subject to aggregate fixed revenue-share payments of $15.8&#160;million. The payments are based on a revenue-share rate applied to revenue from the developed-product and the corresponding hardware sales through March 2024. If the minimum revenue-share payments are not achieved by the end of that period, a true-up payment will be due. As of December&#160;31, 2022, the liability, including accrued interest, was $11.4&#160;million, of which $7.2&#160;million is included in &#x201c;Accrued liabilities&#x201d; and $4.2&#160;million in &#x201c;Other long-term liabilities&#x201d; in the accompanying Consolidated Balance Sheet. As of December 31, 2021, the liability, including accrued interest, was $13.2&#160;million, of which $4.7&#160;million was included in &#x201c;Accrued liabilities&#x201d; and $8.5&#160;million in other &#x201c;Other long-term liabilities.&#x201d;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_027d6b6d-617d-484f-9ecf-b96b9b28d960"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_50fa3eb5-1337-42a0-a46b-a7c0ec1f6782"&gt;Accrued liabilities&lt;/span&gt;&lt;/span&gt; consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.035%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.178%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.179%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Compensation and related benefits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;27,813&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,165&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Component inventory held by suppliers&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,280&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,611&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Professional and consulting fees&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,307&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,819&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current portion of revenue-share payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,210&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,731&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current portion of warranty and retrofit&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,377&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,076&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Customer advances or rebates&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,653&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,742&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Taxes payable&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,581&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,251&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Operating leases&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,949&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,596&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Freight&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,649&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,997&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Business events&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,167&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product returns&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,961&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,836&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,773&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;90,474&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;71,597&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Changes in the Company&#x2019;s accrued warranty and retrofit liability were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.076%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:60.044%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.195%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.195%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.198%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at beginning of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,208&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,294&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Provision for warranty and retrofit charged to cost of revenue&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,315&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,370&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,888&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Utilization of reserve&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,523)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,984)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(3,974)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at end of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,386&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,208&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Accrued Restructuring Charges&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company initiated a restructuring plan in 2020 to accelerate the Company&#x2019;s platform future and to align with a work-from-anywhere culture. The Company incurred restructuring charges of approximately $6.3&#160;million, consisting of facilities-related charges and severance and other termination related benefits for the year ended December 31, 2020.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In the fourth quarter of 2021, as a result of subleasing the abandoned portion of the Company&#x2019;s San Jose headquarters, the Company reversed $0.8&#160;million in facilities-related charges due to the expected recovery of accrued common areas maintenance fees.&lt;/span&gt;&lt;/div&gt;As of December&#160;31, 2022, the Company had no accrued restructuring charges in the accompanying Consolidated Balance Sheet.</us-gaap:SupplementalBalanceSheetDisclosuresTextBlock>
    <us-gaap:ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ5NA_3536d008-f6f6-44aa-8e39-1dc687776bf4">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accounts receivable, net consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:98.538%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.380%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.432%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.027%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.432%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.029%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Accounts receivable&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;94,201&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;85,944&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(397)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(725)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;93,804&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;85,219&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock>
    <us-gaap:AccountsReceivableGrossCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfMi0yLTEtMS0zNjE5OA_e411f615-d323-44a4-a6e9-7de99d50ef9f"
      unitRef="usd">94201000</us-gaap:AccountsReceivableGrossCurrent>
    <us-gaap:AccountsReceivableGrossCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfMi00LTEtMS0zNjE5OA_71816d40-b727-478e-9eb3-9df42d9b7ecf"
      unitRef="usd">85944000</us-gaap:AccountsReceivableGrossCurrent>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfMy0yLTEtMS0zNjE5OA_9a4f0654-205f-4240-8a77-b33d85af4383"
      unitRef="usd">397000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfMy00LTEtMS0zNjE5OA_1faf3fce-b535-404a-902e-1220f39514d4"
      unitRef="usd">725000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfNC0yLTEtMS0zNjE5OA_bedcd568-59e7-4220-9c11-10a608c47cf9"
      unitRef="usd">93804000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjA1YzQ2MGM5NjUzOTRmYjZiNmNmNDBmOTZkYjZjNjQ2L3RhYmxlcmFuZ2U6MDVjNDYwYzk2NTM5NGZiNmI2Y2Y0MGY5NmRiNmM2NDZfNC00LTEtMS0zNjE5OA_9834b75f-7862-4fbe-a5f8-3c188d6072e3"
      unitRef="usd">85219000</us-gaap:AccountsReceivableNetCurrent>
    <calx:ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ4OQ_8dea92ee-f209-4a04-89ee-b4ad413a9427">&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The table below summarizes the changes in allowance for doubtful accounts and product return liability for the periods indicated (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.076%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:46.490%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.345%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.345%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.345%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.351%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Balance at Beginning of Year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Additions Charged to Expenses or Revenue Net of Recoveries&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Write Offs and Returns&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Balance at &lt;br/&gt;End of Year&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2022:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;725&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(276)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(52)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;397&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product return liability&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,836&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,622&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4,497)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,961&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2021:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,405&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(201)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(479)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;725&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product return liability&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,888&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,681&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(3,733)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,836&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2020:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Allowance for doubtful accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;374&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,085&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(54)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,405&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product return liability&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;919&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,391&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,422)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,888&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</calx:ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ieb051ab610094bc982d7f8bddacb801c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMi0yLTEtMS0zNjE5OA_716aaf58-60b3-4b0d-808c-393da3a3c090"
      unitRef="usd">725000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="ib92f3ac53aca49de92990fdea96d45fa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMi00LTEtMS0zNjE5OA_d310ad59-38e5-41ad-958c-458f255e0958"
      unitRef="usd">-276000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="ib92f3ac53aca49de92990fdea96d45fa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMi02LTEtMS0zNjE5OA_a7c4af90-d701-4768-9001-71cbc8a97a33"
      unitRef="usd">52000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i8eef97f8547d428085e80cc1cc4f16ce_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMi04LTEtMS0zNjE5OA_d6dc064f-a7fa-4d95-8a5e-07b3f353d39f"
      unitRef="usd">397000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="iebe8abb865a348c58ba05736022e6e1f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMy0yLTEtMS0zNjE5OA_32e4b0c3-0f89-4af5-815a-66609386fecf"
      unitRef="usd">1836000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i9d905ccbbb3241a997324600f7a5cfc2_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMy00LTEtMS0zNjE5OA_587d09dd-0c46-4526-a0a4-54cc34df18d1"
      unitRef="usd">5622000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i9d905ccbbb3241a997324600f7a5cfc2_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMy02LTEtMS0zNjE5OA_4343ad99-9153-4684-b1d8-7ceebd14cf5a"
      unitRef="usd">4497000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="if617aab8c27e4dc6aab4a0a32d272ca3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfMy04LTEtMS0zNjE5OA_7325c845-f4fd-4ea7-b509-7bf2d54a71cc"
      unitRef="usd">2961000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i5782a4e7e94146cbac209e543c2116a3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNS0yLTEtMS0zNjE5OA_51748538-0699-4779-8323-41daed165c6a"
      unitRef="usd">1405000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="iad5ba5a8071f469bbd153fbec01071bb_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNS00LTEtMS0zNjE5OA_ffbadea6-a15e-4c4d-90c0-1af017870981"
      unitRef="usd">-201000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="iad5ba5a8071f469bbd153fbec01071bb_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNS02LTEtMS0zNjE5OA_f6883977-b3d9-46fe-93fa-d18f30ed2e21"
      unitRef="usd">479000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ieb051ab610094bc982d7f8bddacb801c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNS04LTEtMS0zNjE5OA_7667d4a1-c3d4-4647-9173-336896e1b7cd"
      unitRef="usd">725000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i915095b41f604af89d5f5c1c0b516f64_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNi0yLTEtMS0zNjE5OA_39c265f9-eea0-46ca-9a06-de145335c5f4"
      unitRef="usd">1888000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i0f99024590684757bf76146dac6621f8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNi00LTEtMS0zNjE5OA_ddc550e4-291f-45af-a3eb-554f57b67375"
      unitRef="usd">3681000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i0f99024590684757bf76146dac6621f8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNi02LTEtMS0zNjE5OA_6eae9b56-63c6-4947-b3c9-f9b66a568705"
      unitRef="usd">3733000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="iebe8abb865a348c58ba05736022e6e1f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfNi04LTEtMS0zNjE5OA_21314124-e19d-4de0-a401-0602b6a3a5a2"
      unitRef="usd">1836000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i87fd0a9a32974808b514ae0e6b4977f2_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOC0yLTEtMS0zNjE5OA_129ad578-50bd-4b99-9e70-90636d045e16"
      unitRef="usd">374000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i92749530cfc04658b8e87d80c4434870_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOC00LTEtMS0zNjE5OA_e05b8f21-b373-476e-82cf-af3b69951951"
      unitRef="usd">1085000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i92749530cfc04658b8e87d80c4434870_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOC02LTEtMS0zNjE5OA_143f34aa-6d4f-4295-a9c3-4526a8bc75a1"
      unitRef="usd">54000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i5782a4e7e94146cbac209e543c2116a3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOC04LTEtMS0zNjE5OA_ca9d5d7c-d081-4a10-90e0-ae9fc45e92a6"
      unitRef="usd">1405000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ie99c59fbe14a4befb7f451e29f097c4f_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOS0yLTEtMS0zNjE5OA_5715cada-58f8-4495-943c-25bcbdf41a30"
      unitRef="usd">919000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i4827582f665d4174a35e6ed4f0286360_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOS00LTEtMS0zNjE5OA_c0757e63-e108-448e-bbe7-94e94927ac5d"
      unitRef="usd">3391000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i4827582f665d4174a35e6ed4f0286360_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOS02LTEtMS0zNjE5OA_c28bc591-31b0-4eea-a3c3-4f4834e74a47"
      unitRef="usd">2422000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i915095b41f604af89d5f5c1c0b516f64_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjkwOGRjN2Y2ZjY2MjQxODFiOWFlZGE3OTQyOGFjZGExL3RhYmxlcmFuZ2U6OTA4ZGM3ZjZmNjYyNDE4MWI5YWVkYTc5NDI4YWNkYTFfOS04LTEtMS0zNjE5OA_7289f553-d80b-4dec-b0d7-51b576a3e60d"
      unitRef="usd">1888000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ScheduleOfInventoryCurrentTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ5OQ_0e6ce628-03d2-423e-87fe-bef9505ff56a">&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventory consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.035%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.178%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.179%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Raw materials&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;640&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;130&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Finished goods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;148,520&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;88,750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;149,160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;88,880&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfInventoryCurrentTableTextBlock>
    <us-gaap:InventoryRawMaterialsNetOfReserves
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfMi0yLTEtMS0zNjE5OA_de9c39a5-82fb-4394-b7d7-c75fd2a0cead"
      unitRef="usd">640000</us-gaap:InventoryRawMaterialsNetOfReserves>
    <us-gaap:InventoryRawMaterialsNetOfReserves
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfMi00LTEtMS0zNjE5OA_5de390a9-ca1b-4b86-81e8-0726ed510105"
      unitRef="usd">130000</us-gaap:InventoryRawMaterialsNetOfReserves>
    <us-gaap:InventoryFinishedGoodsNetOfReserves
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfMy0yLTEtMS0zNjE5OA_f5115f68-d0a3-417f-8eae-8b9cd76c7993"
      unitRef="usd">148520000</us-gaap:InventoryFinishedGoodsNetOfReserves>
    <us-gaap:InventoryFinishedGoodsNetOfReserves
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfMy00LTEtMS0zNjE5OA_24927ec3-ce7c-4700-b1dd-29097dd4d464"
      unitRef="usd">88750000</us-gaap:InventoryFinishedGoodsNetOfReserves>
    <us-gaap:InventoryNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfNC0yLTEtMS0zNjE5OA_a89d471f-ac64-4f1c-ac41-29122121424b"
      unitRef="usd">149160000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmZkYTU3NGQ1ZTg4ODQzNjY5ZDhjNWI4NzA5NTI2MDRmL3RhYmxlcmFuZ2U6ZmRhNTc0ZDVlODg4NDM2NjlkOGM1Yjg3MDk1MjYwNGZfNC00LTEtMS0zNjE5OA_a4783ed8-1c6b-4f02-ac53-d5b2ea899ae2"
      unitRef="usd">88880000</us-gaap:InventoryNet>
    <us-gaap:DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTY0OTI2NzQ1MDAyMQ_73fbc332-429f-4382-b179-9791dd2a42c0">&lt;div style="margin-top:7pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Prepaid expenses and other current assets consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.750%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.828%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.830%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Supplier deposits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;39,064&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,191&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,627&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;24,620&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,691&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;30,811&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock>
    <us-gaap:DepositsAssetsCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfMi0yLTEtMS00MTM4Nw_5e21f7ed-e79c-427d-9b99-24d25f56d686"
      unitRef="usd">39064000</us-gaap:DepositsAssetsCurrent>
    <us-gaap:DepositsAssetsCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfMi00LTEtMS00MTM4Nw_9308563b-7743-4643-b30a-20c73a8041cc"
      unitRef="usd">6191000</us-gaap:DepositsAssetsCurrent>
    <calx:PrepaidExpensesAndOtherAssetsMiscellaneousCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfMy0yLTEtMS00MTM4Nw_4f10b126-a1e7-4af2-a8d4-56ce33b24944"
      unitRef="usd">23627000</calx:PrepaidExpensesAndOtherAssetsMiscellaneousCurrent>
    <calx:PrepaidExpensesAndOtherAssetsMiscellaneousCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfMy00LTEtMS00MTM4Nw_6c2c8176-77d9-4364-9683-1e36b462f97b"
      unitRef="usd">24620000</calx:PrepaidExpensesAndOtherAssetsMiscellaneousCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfNC0yLTEtMS00MTM4Nw_217b8db7-4066-485f-9837-61e0350bcaac"
      unitRef="usd">62691000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjI4MWI2ZjUxYjU0MzRmNzFhMzNhY2ViZmJlYWRkMWE4L3RhYmxlcmFuZ2U6MjgxYjZmNTFiNTQzNGY3MWEzM2FjZWJmYmVhZGQxYThfNC00LTEtMS00MTM4Nw_9e1f5199-ace4-449a-bafb-1436cefb3532"
      unitRef="usd">30811000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PropertyPlantAndEquipmentTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ5NQ_c5ee4b41-7616-4886-832b-5d04ef952dd3">&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property and equipment, net consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.035%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.178%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.179%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Test equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;44,106&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;39,476&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Computer equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,396&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,156&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Software&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,389&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,013&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Leasehold improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,730&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,351&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,153&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,812&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;70,774&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Accumulated depreciation and amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(44,940)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(41,025)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,834&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,783&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:PropertyPlantAndEquipmentTextBlock>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="iebb784ec1d1048e4b3adf4de3e50ed56_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfMi0yLTEtMS0zNjE5OA_dcc3037e-5c70-404d-8942-66374671b7ce"
      unitRef="usd">44106000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ib3e6d85676a149d5b92fe67b4dd2f810_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfMi00LTEtMS0zNjE5OA_33c9a629-cd3f-4a26-b7fe-fa0b44b768d3"
      unitRef="usd">39476000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ic272514a784a4bfb9f74d54bf7e6b2d4_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfMy0yLTEtMS0zNjE5OA_b6058394-7b64-4f7a-91c4-9954085dbc9a"
      unitRef="usd">13396000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i9c61681ac2dd40a199c97e498d4424b3_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfMy00LTEtMS0zNjE5OA_0376853d-70a2-40a0-98e5-cefa68437b08"
      unitRef="usd">11156000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="icb4228678bd94611ba039b6b832a6910_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNC0yLTEtMS0zNjE5OA_9fb2a0e0-0599-4163-93f0-844a0b6ca69c"
      unitRef="usd">10389000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="iec140b402bfd43a8810ed0d254278f7f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNC00LTEtMS0zNjE5OA_a8e402c6-b78e-4c0d-8ee5-2bad9affc31d"
      unitRef="usd">9013000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i6ae01a9fed3143c39a5d8900e11ab1dc_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNS0yLTEtMS0zNjE5OA_25d00388-8136-4fd0-9061-7c657ad3b824"
      unitRef="usd">1730000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="id764aa16db854d7088bcc29cffc1ecd4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNS00LTEtMS0zNjE5OA_cf842b9d-a5ce-439f-81e6-e27cf63df3d9"
      unitRef="usd">1351000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i6ad0d0e543464e82a0d0f6c87834547c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNi0yLTEtMS0zNjE5OA_2c3c23f5-5278-46b0-8c4f-564499c41b66"
      unitRef="usd">1153000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i1ab5679f664a4a9483a2e951b60376c2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNi00LTEtMS0zNjE5OA_846cf51b-08e7-4d9f-848a-1c3c13d020b5"
      unitRef="usd">1812000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNy0yLTEtMS0zNjE5OA_cb33f4a7-1c69-4529-84a1-85fb4f2ee61c"
      unitRef="usd">70774000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfNy00LTEtMS0zNjE5OA_d663b34f-2fe0-4ac4-910c-a468d010d86c"
      unitRef="usd">62808000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfOC0yLTEtMS0zNjE5OA_107baa94-b090-4029-b3c4-efe81f084ab5"
      unitRef="usd">44940000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfOC00LTEtMS0zNjE5OA_fdfbf422-bb34-4968-bcd8-c020bdfef10a"
      unitRef="usd">41025000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfOS0yLTEtMS0zNjE5OA_ad142b67-52da-4e9e-99a9-d66a4d9aecd6"
      unitRef="usd">25834000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjZmM2IyMmE2MTQ1ODRiZTNhYjY0OGQxMWRjOTI5YTJmL3RhYmxlcmFuZ2U6NmYzYjIyYTYxNDU4NGJlM2FiNjQ4ZDExZGM5MjlhMmZfOS00LTEtMS0zNjE5OA_973048a6-6050-4f87-9cf2-e8170b1c05b9"
      unitRef="usd">21783000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:Depreciation
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfNDIw_cdc5835b-760a-41e6-a3f3-e436d5453bb8"
      unitRef="usd">14300000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfNDI0_695fdbad-92c6-4a50-a6f8-2637bb45e8f2"
      unitRef="usd">15000000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfNDMx_f71e4056-0595-4250-bfcf-3e4d109e9355"
      unitRef="usd">13700000</us-gaap:Depreciation>
    <us-gaap:ScheduleOfOtherAssetsNoncurrentTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ5Mw_cedbb4b4-dbd8-4894-ba64-97937e6af227">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Other long-term assets consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.750%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.828%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.446%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.830%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Intangible asset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,253&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,885&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other long-term assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;14,889&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19,142&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,685&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfOtherAssetsNoncurrentTextBlock>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfMi0yLTEtMS0zNjE5OA_f0e50d07-b8f6-48e1-b606-65128ec6b7a1"
      unitRef="usd">4253000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfMi00LTEtMS0zNjE5OA_cd85099f-f67e-4cc5-b95a-bf63381a1b0d"
      unitRef="usd">6885000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:OtherAssetsMiscellaneousNoncurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfMy0yLTEtMS0zNjE5OA_96299e2d-0808-4d6a-8761-297c706cdaf7"
      unitRef="usd">14889000</us-gaap:OtherAssetsMiscellaneousNoncurrent>
    <us-gaap:OtherAssetsMiscellaneousNoncurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfMy00LTEtMS0zNjE5OA_97aa2fd1-dc28-4788-ae72-524c58cc082a"
      unitRef="usd">6800000</us-gaap:OtherAssetsMiscellaneousNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfNC0yLTEtMS0zNjE5OA_1db0f7e8-7f90-4d2d-a491-c53185acd19b"
      unitRef="usd">19142000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOmFjMzhmNDEwNjVlZTQ0OTY5MTRlYjQzZmQ1MDkyYTEyL3RhYmxlcmFuZ2U6YWMzOGY0MTA2NWVlNDQ5NjkxNGViNDNmZDUwOTJhMTJfNC00LTEtMS0zNjE5OA_aeab9773-a005-436c-8977-a63287dc263b"
      unitRef="usd">13685000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:RoyaltyGuaranteesCommitmentsAmount
      contextRef="ifec7805f58bf4e1eb494b1fd74099264_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTcwOA_5432da6c-822a-4dd4-97bd-8524c97d7511"
      unitRef="usd">15800000</us-gaap:RoyaltyGuaranteesCommitmentsAmount>
    <us-gaap:OtherLiabilities
      contextRef="i64cf409db5e74b9e888f27feb92d3f31_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTcyMw_967d74d6-04ac-4fce-89b1-cbc0a69830c0"
      unitRef="usd">11400000</us-gaap:OtherLiabilities>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i64cf409db5e74b9e888f27feb92d3f31_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTczOA_3b6070dd-afbc-4dcb-a335-67cb799dd2d2"
      unitRef="usd">7200000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i64cf409db5e74b9e888f27feb92d3f31_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTc1Mg_396f73b6-270e-4d8c-84e9-7abaae6f998a"
      unitRef="usd">4200000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilities
      contextRef="i29707179eee34196994e77484ecb2b78_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTc2Ng_b764596c-c8ec-4564-b32f-abad9a4f2d0b"
      unitRef="usd">13200000</us-gaap:OtherLiabilities>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i29707179eee34196994e77484ecb2b78_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTc4MQ_c0509844-c863-4f45-a603-d0dbe6021844"
      unitRef="usd">4700000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i29707179eee34196994e77484ecb2b78_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTc5NQ_aa15298e-5f6f-4c27-a932-5fc18f67d78f"
      unitRef="usd">8500000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzUwNw_d06f2708-8e92-48ee-ba46-63d195898a4b">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_027d6b6d-617d-484f-9ecf-b96b9b28d960"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzMTI4OA_50fa3eb5-1337-42a0-a46b-a7c0ec1f6782"&gt;Accrued liabilities&lt;/span&gt;&lt;/span&gt; consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.222%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:73.035%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.178%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.179%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Compensation and related benefits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;27,813&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,165&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Component inventory held by suppliers&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,280&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,611&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Professional and consulting fees&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,307&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,819&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current portion of revenue-share payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,210&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,731&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current portion of warranty and retrofit&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,377&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,076&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Customer advances or rebates&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,653&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,742&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Taxes payable&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,581&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,251&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Operating leases&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,949&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,596&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Freight&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,649&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,997&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Business events&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,167&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Product returns&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,961&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,836&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,527&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,773&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;90,474&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;71,597&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMi0yLTEtMS0zNjE5OA_e5a597ef-7eca-4554-ac83-29d65d842129"
      unitRef="usd">27813000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMi00LTEtMS0zNjE5OA_3a79f1e3-1fc6-46ae-a533-6c3498b32a53"
      unitRef="usd">23165000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMy0yLTEtMS0zNjE5OA_cca2ee23-8373-4595-879c-0c75d5433945"
      unitRef="usd">10280000</calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer>
    <calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMy00LTEtMS0zNjE5OA_00eb1f11-a844-46dd-8804-9886390e87ee"
      unitRef="usd">7611000</calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer>
    <us-gaap:AccruedProfessionalFeesCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNC0yLTEtMS0zNjE5OA_4ef1941d-105d-44ff-ad83-365327424026"
      unitRef="usd">7307000</us-gaap:AccruedProfessionalFeesCurrent>
    <us-gaap:AccruedProfessionalFeesCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNC00LTEtMS0zNjE5OA_e4b5a41d-f849-4f72-b7ee-f68e3a8c6ada"
      unitRef="usd">4819000</us-gaap:AccruedProfessionalFeesCurrent>
    <calx:AccruedRevenueSharePaymentsCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNS0yLTEtMS0zNjE5OA_51ba3f05-dcd5-47c0-a4f2-eec7448d5429"
      unitRef="usd">7210000</calx:AccruedRevenueSharePaymentsCurrent>
    <calx:AccruedRevenueSharePaymentsCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNS00LTEtMS0zNjE5OA_7b2545e9-37e5-4fba-bcdd-d18f247c8d0e"
      unitRef="usd">4731000</calx:AccruedRevenueSharePaymentsCurrent>
    <us-gaap:ProductWarrantyAccrualClassifiedCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNi0yLTEtMS0zNjE5OA_916a4d65-d3a1-421a-b1f6-7ecd742682d9"
      unitRef="usd">6377000</us-gaap:ProductWarrantyAccrualClassifiedCurrent>
    <us-gaap:ProductWarrantyAccrualClassifiedCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNi00LTEtMS0zNjE5OA_e00960ca-3158-456a-9b0a-8fbaa161a6c2"
      unitRef="usd">7076000</us-gaap:ProductWarrantyAccrualClassifiedCurrent>
    <calx:AccruedCustomerRebates
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNy0yLTEtMS0zNjE5OA_ebb3a027-4314-466c-9634-24cb9db265b1"
      unitRef="usd">5653000</calx:AccruedCustomerRebates>
    <calx:AccruedCustomerRebates
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfNy00LTEtMS0zNjE5OA_e7c9ce5e-a931-420e-b261-ad1dd421c178"
      unitRef="usd">4742000</calx:AccruedCustomerRebates>
    <calx:TaxesPayableCurrentExcludingAccruedIncomeTaxes
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfOC0yLTEtMS0zNjE5OA_a598b1a4-caa9-48d8-bf80-ce5a1847c2da"
      unitRef="usd">4581000</calx:TaxesPayableCurrentExcludingAccruedIncomeTaxes>
    <calx:TaxesPayableCurrentExcludingAccruedIncomeTaxes
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfOC00LTEtMS0zNjE5OA_55483dcf-1f3f-46a7-9762-abd1c7277f0d"
      unitRef="usd">4251000</calx:TaxesPayableCurrentExcludingAccruedIncomeTaxes>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfOS0yLTEtMS0zNjE5OA_8fe3a963-1b02-4ebb-8e9e-422eb8a7ca08"
      unitRef="usd">3949000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfOS00LTEtMS0zNjE5OA_232ad442-e156-458f-bf28-9d031617bca1"
      unitRef="usd">3596000</us-gaap:OperatingLeaseLiabilityCurrent>
    <calx:AccruedFreight
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTAtMi0xLTEtMzYxOTg_74a185ed-97d1-4748-90e9-733cf860845e"
      unitRef="usd">3649000</calx:AccruedFreight>
    <calx:AccruedFreight
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTAtNC0xLTEtMzYxOTg_fbd8831d-c61c-4e13-9318-1a516ecc1335"
      unitRef="usd">3997000</calx:AccruedFreight>
    <calx:AccruedBusinessEventsCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTEtMi0xLTEtMzYxOTg_ccd16f92-2a0c-44e3-9dbc-496581b1d247"
      unitRef="usd">3167000</calx:AccruedBusinessEventsCurrent>
    <calx:AccruedBusinessEventsCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTEtNC0xLTEtMzYxOTg_46a1d4b6-0622-45be-998e-a440a008c081"
      unitRef="usd">0</calx:AccruedBusinessEventsCurrent>
    <calx:ProductReturnReserveCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTItMi0xLTEtMzYxOTg_c88d26c7-4925-4061-9c7c-357cf3119cea"
      unitRef="usd">2961000</calx:ProductReturnReserveCurrent>
    <calx:ProductReturnReserveCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTItNC0xLTEtMzYxOTg_b669a196-c291-473e-807e-aee6cd2546d0"
      unitRef="usd">1836000</calx:ProductReturnReserveCurrent>
    <us-gaap:OtherAccruedLiabilitiesCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTMtMi0xLTEtMzYxOTg_c4ae9886-7e74-459d-b258-8d5281f90dc5"
      unitRef="usd">7527000</us-gaap:OtherAccruedLiabilitiesCurrent>
    <us-gaap:OtherAccruedLiabilitiesCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTMtNC0xLTEtMzYxOTg_9a245895-de02-41ac-8efb-e1aa33fe7385"
      unitRef="usd">5773000</us-gaap:OtherAccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTQtMi0xLTEtMzYxOTg_16b5a560-49ce-406f-95de-4e6a07bb5a8a"
      unitRef="usd">90474000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjc4ZmRlMjM5M2M5ZTRhOGZiZjllNmE4NGM5ZWQ4OGQyL3RhYmxlcmFuZ2U6NzhmZGUyMzkzYzllNGE4ZmJmOWU2YTg0YzllZDg4ZDJfMTQtNC0xLTEtMzYxOTg_7641501f-724a-49dc-886d-f09821a7023f"
      unitRef="usd">71597000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzQ4Ng_51a043db-dfbb-4a4a-94e9-105b48130805">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Changes in the Company&#x2019;s accrued warranty and retrofit liability were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.076%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:60.044%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.195%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.195%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.456%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.198%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at beginning of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,208&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,294&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Provision for warranty and retrofit charged to cost of revenue&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,315&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,370&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,888&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Utilization of reserve&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,523)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,984)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(3,974)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at end of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,386&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,208&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock>
    <us-gaap:ProductWarrantyAccrual
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMi0yLTEtMS0zNjE5OA_f9f8f345-4e41-4505-b86f-8a98e1b6d349"
      unitRef="usd">9594000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrual
      contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMi00LTEtMS0zNjE5OA_4a2d2cdc-f3c2-472e-87f3-f113341ade83"
      unitRef="usd">9208000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrual
      contextRef="ibe3ffb6b029948b89bd038665fa57d44_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMi02LTEtMS0zNjE5OA_0c8fe711-8a52-43e3-8c26-133a668fae99"
      unitRef="usd">7294000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrualWarrantiesIssued
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMy0yLTEtMS0zNjE5OA_3df8e2ba-36b7-448a-ace7-46330b291953"
      unitRef="usd">1315000</us-gaap:ProductWarrantyAccrualWarrantiesIssued>
    <us-gaap:ProductWarrantyAccrualWarrantiesIssued
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMy00LTEtMS0zNjE5OA_45a41b4b-7e3b-4c04-be2a-d5a31ace8ca2"
      unitRef="usd">3370000</us-gaap:ProductWarrantyAccrualWarrantiesIssued>
    <us-gaap:ProductWarrantyAccrualWarrantiesIssued
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfMy02LTEtMS0zNjE5OA_82b34a65-26a9-4f5c-8115-a292d66f5b3b"
      unitRef="usd">5888000</us-gaap:ProductWarrantyAccrualWarrantiesIssued>
    <us-gaap:ProductWarrantyAccrualPayments
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNC0yLTEtMS0zNjE5OA_76d8f45f-8f8a-4f06-8a0e-ca18e0e7a98c"
      unitRef="usd">2523000</us-gaap:ProductWarrantyAccrualPayments>
    <us-gaap:ProductWarrantyAccrualPayments
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNC00LTEtMS0zNjE5OA_2f4497aa-4dbd-4f6d-8854-e8ddb5db7f4b"
      unitRef="usd">2984000</us-gaap:ProductWarrantyAccrualPayments>
    <us-gaap:ProductWarrantyAccrualPayments
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNC02LTEtMS0zNjE5OA_e4538c1b-f1a6-4494-870e-8feed6de5fe9"
      unitRef="usd">3974000</us-gaap:ProductWarrantyAccrualPayments>
    <us-gaap:ProductWarrantyAccrual
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNi0yLTEtMS0zNjE5OA_e1f1c0bf-9bff-4f14-badb-5b777bd4869e"
      unitRef="usd">8386000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrual
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNi00LTEtMS0zNjE5OA_69528ec1-15e8-4320-a5df-286021e7b627"
      unitRef="usd">9594000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrual
      contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RhYmxlOjE0ZDM4ZWUzNWQzOTQyNDBhZjZmNDQ1MDY4NDY3Y2M0L3RhYmxlcmFuZ2U6MTRkMzhlZTM1ZDM5NDI0MGFmNmY0NDUwNjg0NjdjYzRfNi02LTEtMS0zNjE5OA_39e499aa-e645-4cba-8b2a-2c7dc6449a2f"
      unitRef="usd">9208000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:RestructuringCharges
      contextRef="ia8bc5723e8d94237a0acf104c58672c9_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMjk3NA_8b666fc4-ebce-42c1-8aa0-73e1f7c42c66"
      unitRef="usd">6300000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="ief29060d1533404bb2cd809c20ef7077_D20211003-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMzI1MA_1f5bd372-61d9-4b5c-863e-87c712882d94"
      unitRef="usd">-800000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringReserve
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM185MS9mcmFnOjY3NGY5MzE0ZTdmODQwNGE4ZjgwNzM0MzhmYWIzYTZmL3RleHRyZWdpb246Njc0ZjkzMTRlN2Y4NDA0YThmODA3MzQzOGZhYjNhNmZfMTA5OTUxMTYzNTgxMg_60c0faa9-2006-42ef-8655-b8c013788608"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:CommitmentsAndContingenciesDisclosureTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzU4NzA_d4db09fc-fad6-4f68-8810-61a4e6e275f9">Commitments and Contingencies&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Lease Commitments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company leases office space under non-cancelable operating leases. Certain of the Company&#x2019;s operating leases contain renewal options and rent acceleration clauses. Future minimum payments under the non-cancelable operating leases consisted of the following as of December&#160;31, 2022 (in&#160;thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:75.546%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:6.834%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ending December 31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;Future Minimum Lease Payments&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,629&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,458&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,955&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2026 and thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;531&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total future minimum lease payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,573&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Less imputed interest&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,182)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 12.25pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,391&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:1pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:1pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, the operating lease liability consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.398%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:3.152%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.150%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzAtMC0xLTEtMzYxOTg_0eaed16b-5a85-4f40-8558-3b742d67e1cb"&gt;Accrued liabilities - current portion of operating leases&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,949&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Operating leases&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,442&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,391&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company leases its headquarters office space in San Jose, California under a lease agreement that expires in December 2025. The future minimum lease payments under the lease are $7.3 million and are included in the table for the year ended December&#160;31, 2022 above.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The above tables also include future minimum lease payments for the Company's office facilities in Petaluma, California; Plymouth, Minnesota; Richardson, Texas; Bangalore, India; Nanjing, China; and West Jordan, Utah, which expire at various dates through 2027.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In November 2021, the Company entered into a sublease for a portion of the San Jose headquarters office space that was previously abandoned. The sublease commenced in August 2022 for a term of 39 months. The Company received $0.3&#160;million in sublease income in 2022. Future minimum payments consisted of the following as of December&#160;31, 2022 (in&#160;thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:75.546%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:6.834%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ending December 31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;Future Minimum Sublease Payments&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;773&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;661&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total future minimum sublease payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,184&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The weighted average discount rate for the Company&#x2019;s operating leases as of December&#160;31, 2022 was 6.1%. The weighted average remaining lease term as of December&#160;31, 2022 was 3.0 years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For the years ended December&#160;31, 2022, 2021 and 2020, total rent expense of the Company was $4.6 million, $4.1 million and $4.0 million, respectively. Cash paid within operating cash flows for operating leases was $4.5&#160;million, $3.9 million and $3.8&#160;million for years ended December&#160;31, 2022, 2021 and 2020, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Purchase Commitments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s CMs and ODMs place orders for certain component inventory in advance based upon the Company&#x2019;s build forecasts in order to reduce manufacturing lead times and ensure adequate component supply. The components are used by the CMs and ODMs to build the products included in the build forecasts. The Company generally does not take ownership of the components held by CMs and ODMs. The Company places purchase orders with its CMs and ODMs in order to fulfill its monthly finished product inventory requirements. The Company incurs a liability when the CMs and ODMs convert the component inventory to a finished product and takes ownership of the finished goods inventory. In the event of termination of services with a manufacturing partner, the Company has purchased, and may be required to purchase in the future, certain of the &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;remaining components inventory held by the CM or ODM as well as any outstanding orders pursuant to the contractual provisions with such CM or ODM. As of December&#160;31, 2022 and 2021, the Company had approximately $340.6 million and $247.3&#160;million, respectively, of outstanding purchase commitments for inventories to be delivered by its suppliers, including CMs and ODMs.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company has from time to time, and subject to certain conditions, reimbursed certain suppliers for component inventory purchases when this inventory has been rendered excess or obsolete, for example due to manufacturing and engineering change orders resulting from design changes, manufacturing discontinuation of products by its suppliers, or in cases where the Company has committed inventory levels that greatly exceed projected demand. The estimated excess and obsolete inventory liabilities related to such manufacturing and engineering change orders and other factors, which are included in accrued liabilities in the accompanying Consolidated Balance Sheets, were $10.3 million and $7.6 million as of December&#160;31, 2022 and 2021, respectively. The Company records the related charges in cost of systems revenue in its Consolidated Statements of Comprehensive Income.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Litigation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;From time to time, the Company is involved in various legal proceedings arising from the normal course of business activities. The Company is not currently a party to any legal proceedings that, if determined adversely to the Company, in management&#x2019;s opinion, are currently expected to individually or in the aggregate have a material adverse effect on the Company&#x2019;s business, operating results or financial condition taken as a whole.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Indemnifications&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company from time to time enters into contracts that require it to indemnify various parties against claims from third parties. These contracts primarily relate to (i)&#160;certain real estate leases, under which the Company may be required to indemnify property owners for environmental and other liabilities, and other claims arising from the Company&#x2019;s use of the applicable premises, (ii)&#160;agreements with the Company&#x2019;s officers, directors and certain employees, under which the Company may be required to indemnify such persons for liabilities arising out of their relationship with the Company, (iii)&#160;contracts under which the Company may be required to indemnify customers against third-party claims that a Company product infringes a patent, copyright or other intellectual property right and (iv)&#160;agreements under which the Company may be required to indemnify the counterparty for certain claims that may be brought against them arising from the Company&#x2019;s acts or omissions with respect to the transactions contemplated by such agreements.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Because any potential obligation associated with these types of contractual provisions are not quantified or stated, the overall maximum amount of the obligation cannot be reasonably estimated. Historically, the Company has not been required to make payments under these obligations, and no liabilities have been recorded for these obligations in the accompanying Consolidated Balance Sheets.&lt;/span&gt;&lt;/div&gt;</us-gaap:CommitmentsAndContingenciesDisclosureTextBlock>
    <us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzU4NjY_ec92ef73-14ef-4c38-97ec-ad7ea5b01154">Future minimum payments under the non-cancelable operating leases consisted of the following as of December&#160;31, 2022 (in&#160;thousands):&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:75.546%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:6.834%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ending December 31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;Future Minimum Lease Payments&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,629&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,458&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,955&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2026 and thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;531&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total future minimum lease payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,573&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Less imputed interest&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,182)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 12.25pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,391&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzEtMi0xLTEtMzYxOTg_f6b815f3-e663-485e-be9a-5b31a39ff9c1"
      unitRef="usd">4629000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzItMi0xLTEtMzYxOTg_84748910-ca00-40fb-a6fa-6fc17cc67f15"
      unitRef="usd">4458000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzMtMi0xLTEtMzYxOTg_c4224e71-e81b-43d2-9d0a-bd1d61c2f941"
      unitRef="usd">3955000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzQtMi0xLTEtMzYxOTg_06023ec4-9717-44d9-9765-de7fb96d0a92"
      unitRef="usd">531000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzctMi0xLTEtMzYxOTg_35c190de-20af-4126-aaf3-8cfd49a47128"
      unitRef="usd">13573000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzgtMi0xLTEtMzYxOTg_82ce0a90-c757-459c-875a-ec29e2963e5c"
      unitRef="usd">1182000</us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount>
    <us-gaap:OperatingLeaseLiability
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTpiNWM5ZDgyYzI1YzQ0YTBlYTU3MzdiZDc1YzI5Y2Y2Ni90YWJsZXJhbmdlOmI1YzlkODJjMjVjNDRhMGVhNTczN2JkNzVjMjljZjY2XzktMi0xLTEtMzYxOTg_15d71804-926a-4a74-86f8-c0d246228193"
      unitRef="usd">12391000</us-gaap:OperatingLeaseLiability>
    <calx:LesseeOperatingLeaseLiabilityTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzU4Nzc_79ef7cfd-ebcd-4d4c-8b3f-f74186b51ca5">&lt;div style="margin-top:1pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, the operating lease liability consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.398%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:3.152%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.150%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzAtMC0xLTEtMzYxOTg_0eaed16b-5a85-4f40-8558-3b742d67e1cb"&gt;Accrued liabilities - current portion of operating leases&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,949&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Operating leases&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,442&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,391&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</calx:LesseeOperatingLeaseLiabilityTableTextBlock>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzAtMi0xLTEtMzYxOTg_82b2606a-83dc-4c06-ba02-7de3ae841f2f"
      unitRef="usd">3949000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzEtMi0xLTEtMzYxOTg_cd39ec51-691f-47d3-8405-2bd895c287d2"
      unitRef="usd">8442000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiability
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTphYWZiYmViNzQxMTc0MmUwODc2MTc4NGY1YjBiNGFiYy90YWJsZXJhbmdlOmFhZmJiZWI3NDExNzQyZTA4NzYxNzg0ZjViMGI0YWJjXzItMi0xLTEtMzYxOTg_dfb058c2-b2c1-4374-9bcf-1da90440adc9"
      unitRef="usd">12391000</us-gaap:OperatingLeaseLiability>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="ia1b2dc7d18c14276b64719107b47aec1_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzYxMg_7d706461-5a7c-4db2-a862-3dc75791e1d3"
      unitRef="usd">7300000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:LessorOperatingLeaseTermOfContract
      contextRef="id212028f7d3447bc991b7b183b10250a_I20211130"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE0NzE_cb841f41-6fee-4423-92de-620ec2f325b2">P39M</us-gaap:LessorOperatingLeaseTermOfContract>
    <us-gaap:SubleaseIncome
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzEwOTk1MTE2MzQzNzM_57354fb8-f318-4255-bc41-8d8eb1b273ff"
      unitRef="usd">300000</us-gaap:SubleaseIncome>
    <us-gaap:LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzU4Njk_fd6356b8-7ca6-4772-9bc1-be51a3fff4f6">Future minimum payments consisted of the following as of December&#160;31, 2022 (in&#160;thousands):&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:75.546%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:6.834%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ending December 31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;Future Minimum Sublease Payments&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;750&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;773&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;661&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total future minimum sublease payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,184&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock>
    <us-gaap:LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTplMGY5MGQxZDM5ZjA0ODA1OWEyM2NhN2VmN2E3MmU4MC90YWJsZXJhbmdlOmUwZjkwZDFkMzlmMDQ4MDU5YTIzY2E3ZWY3YTcyZTgwXzItMi0xLTEtMzYxOTg_cf094f6f-c0a6-47e8-acbd-7937a16ba92e"
      unitRef="usd">750000</us-gaap:LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths>
    <us-gaap:LessorOperatingLeasePaymentsToBeReceivedTwoYears
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTplMGY5MGQxZDM5ZjA0ODA1OWEyM2NhN2VmN2E3MmU4MC90YWJsZXJhbmdlOmUwZjkwZDFkMzlmMDQ4MDU5YTIzY2E3ZWY3YTcyZTgwXzMtMi0xLTEtMzYxOTg_07a45aac-f0bf-4f26-8dca-59c81eb9f01c"
      unitRef="usd">773000</us-gaap:LessorOperatingLeasePaymentsToBeReceivedTwoYears>
    <us-gaap:LessorOperatingLeasePaymentsToBeReceivedThreeYears
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTplMGY5MGQxZDM5ZjA0ODA1OWEyM2NhN2VmN2E3MmU4MC90YWJsZXJhbmdlOmUwZjkwZDFkMzlmMDQ4MDU5YTIzY2E3ZWY3YTcyZTgwXzQtMi0xLTEtMzYxOTg_a1340de1-3296-40f6-99fd-feebc2770670"
      unitRef="usd">661000</us-gaap:LessorOperatingLeasePaymentsToBeReceivedThreeYears>
    <us-gaap:LessorOperatingLeasePaymentsToBeReceived
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90YWJsZTplMGY5MGQxZDM5ZjA0ODA1OWEyM2NhN2VmN2E3MmU4MC90YWJsZXJhbmdlOmUwZjkwZDFkMzlmMDQ4MDU5YTIzY2E3ZWY3YTcyZTgwXzUtMi0xLTEtMzYxOTg_c16988e0-dc45-452c-a38e-66da8e445c08"
      unitRef="usd">2184000</us-gaap:LessorOperatingLeasePaymentsToBeReceived>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE2NDM_1f11f47d-c1f7-4a25-a3c4-6e7d03eecb92"
      unitRef="number">0.061</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE3MDI_38edc2aa-7d8e-4051-9e3f-0ecf14a3206f">P3Y</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseCost
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE3ODU_c625c45e-d5a1-4517-a172-469d300f3e21"
      unitRef="usd">4600000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeaseCost
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE3ODk_cf877d75-deb4-4958-933c-f571b597423c"
      unitRef="usd">4100000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeaseCost
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE3OTY_870a7afd-efcf-4a26-a641-78846a08279a"
      unitRef="usd">4000000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeasePayments
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzEwOTk1MTE2MzQzNDU_d5e91cb3-e7bc-4222-a130-ce61dc63996e"
      unitRef="usd">4500000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzE4Nzc_b9b949c7-531d-465d-9ab1-327669ab38d2"
      unitRef="usd">3900000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzEwOTk1MTE2MzQzNTk_417f8dfb-718b-43e3-b227-a1e39444f461"
      unitRef="usd">3800000</us-gaap:OperatingLeasePayments>
    <us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzI5NTQ_c459e143-0972-49c9-b502-8be1a49f5544"
      unitRef="usd">340600000</us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted>
    <us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzI5NjE_8f04faf1-b173-4737-9f4e-5ad599f8f0ed"
      unitRef="usd">247300000</us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted>
    <calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzM3ODk_e2631fa7-b8f3-4cbf-94f3-6585b9fa212f"
      unitRef="usd">10300000</calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer>
    <calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDAvZnJhZzo4MzQ3OGQ0MTViMTY0YjNjOTdmN2NjNGQyYmEyY2I1OS90ZXh0cmVnaW9uOjgzNDc4ZDQxNWIxNjRiM2M5N2Y3Y2M0ZDJiYTJjYjU5XzM3OTY_e75a61d8-5281-48d1-8464-0c01ada82e0e"
      unitRef="usd">7600000</calx:AccruedExcessAndObsoleteInventoryAtContractManufacturer>
    <us-gaap:ShareholdersEquityAndShareBasedPaymentsTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDYx_fb9abb14-ca80-4f7a-af95-b89fdccb2d6b">Stockholders&#x2019; Equity &lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Preferred Stock&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Board of Directors has the authority, without a further vote of the stockholders, to designate and issue up to 5.0 million shares of preferred stock in one or more series and to fix the rights, preferences, privileges and restrictions thereof. These rights, preferences and privileges could include dividend rights, conversion rights, voting rights, terms of redemption, liquidation preferences, sinking fund terms and the number of shares constituting any series or the designation of such series, any or all of which may be greater than the rights of common stock. The issuance of the Company&#x2019;s preferred stock could adversely affect the voting power of holders of common stock and the likelihood that such holders will receive dividend payments and payments upon liquidation. In addition, the issuance of preferred stock could have the effect of delaying, deferring or preventing a change in control of the Company or other corporate action. Since the Company&#x2019;s initial public offering, the Board of Directors has not designated any rights, preference or powers of any preferred stock, and no shares of preferred stock have been issued.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Common Stock&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Holders of the Company&#x2019;s common stock are entitled to receive dividends, if any, as may be declared from time to time by the Board of Directors out of legally available funds. No dividends have been declared or paid as of December&#160;31, 2022.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In August 2020, the Company completed an underwritten public offering of 3,220,000 shares of its common stock at $20.00 per share, including a full exercise by the underwriters of their option to purchase an additional 420,000 shares of Common Stock, resulting in net proceeds of $60.1&#160;million, after deducting the underwriting discount and expenses paid by the Company.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Stock Repurchase Program&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In July 2022, the Company&#x2019;s Board of Directors authorized a one-year stock repurchase program for up to $100&#160;million of the Company&#x2019;s common stock. Under the repurchase program, repurchases can be made from time to time using a variety of &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;methods, which may include open market purchases, privately negotiated transactions or otherwise, all in accordance with the rules of the SEC and other applicable legal requirements. The specific timing, price and size of the purchases will depend on prevailing stock prices, general economic and market conditions, and other considerations consistent with the Company&#x2019;s capital allocation strategy. The repurchase program does not obligate the Company to acquire a particular amount of common stock, and the repurchase program may be suspended or discontinued at any time at the Company&#x2019;s discretion. During the year ended December&#160;31, 2022, no repurchases were made under the program.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Equity Incentive Plans&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Stock Options &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At the Company&#x2019;s 2019 annual meeting of stockholders, the stockholders approved the 2019 Equity Incentive Award Plan (the &#x201c;2019 Plan&#x201d;). The 2019 Plan supersedes and replaces the 2010 Equity Incentive Award Plan (the &#x201c;2010 Plan&#x201d;) and preceding plans. The terms and conditions of the 2010 Plan will continue to govern any outstanding awards granted under the 2010 Plan.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Employees and consultants of the Company, its subsidiaries and affiliates and the Company&#x2019;s Board of Directors members are eligible to receive awards under the 2019 Plan. The 2019 Plan provides for the grant of stock options, stock appreciation rights, restricted stock, restricted stock units or other stock or cash-based awards and dividend equivalents to eligible individuals.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At the Company&#x2019;s 2022 annual meeting of stockholders, the stockholders approved an increase in the number of shares of common stock issuable under the 2019 Plan by 1.5&#160;million shares. As of December&#160;31, 2022, there were 6.0 million shares available for issuance under the 2019 Plan. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Stock options granted under the 2019 Plan are granted at a price not less than 100% of the fair market value of the common stock on the date of grant. Stock options issued under the 2019 Plan generally vest 25%&#160;on the first anniversary of the vesting commencement date and on a quarterly basis thereafter for a period of an additional three years. The options have a maximum term of ten years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In February 2021, PSOs exercisable for up to an aggregate of 0.7&#160;million shares of common stock were granted to certain Company executives with a grant date exercise price of $36.74 per share. The actual number of shares earned is contingent upon achievement of annual corporate financial targets for bookings and non-GAAP net income for 2021 (collectively, the &#x201c;2021 Performance Targets&#x201d;) during the one-year performance period. Under the 2021 Performance Targets, if the non-GAAP net income is below 80% of target or bookings are below 90% of target, no shares would be awarded. From this base, shares are awarded on a 50% weighting for both non-GAAP net income and bookings up to 100% for each 2021 Performance Target using a sliding scale.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In February 2022, the Compensation Committee of the Company&#x2019;s Board of Directors certified the results against the 2021 Performance Targets and awarded 97% of PSOs subject to the four-year services condition. As such, 25% of the awarded shares of the PSOs were vested on that date, and the remaining 75% of the shares of common stock will vest in substantially equal quarterly installments over the subsequent 36 months, subject to the executive&#x2019;s continuous service with the Company through the respective vesting dates. Stock-based compensation expense of $3.6&#160;million and $6.3&#160;million was recognized for the years ended December&#160;31, 2022 and 2021, respectively, related to these awards. Also, in February 2022, the Compensation Committee granted PSOs exercisable for up to an aggregate of 0.7&#160;million shares of common stock to certain Company executives with a grant date exercise price of $55.96 per share, using the same plan design as 2021 but with 2022 annual corporate financial targets for bookings and non-GAAP net operating income (collectively, the &#x201c;2022 Performance Targets&#x201d;).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:112%"&gt;In February 2023, the Compensation Committee of the Company&#x2019;s Board of Directors certified the results against the 2022 Performance Targets and awarded 100% of PSOs subject to the four-year service condition. As such, 25% of the awarded shares of the PSOs were vested on that date, and the remaining 75% of the shares of common stock will vest in substantially equal quarterly installments over the subsequent 36 months, subject to the executive&#x2019;s continuous service with the Company through the respective vesting dates. Stock-based compensation expense of $10.1&#160;million was recognized for the year ended December&#160;31, 2022 related to these awards.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the stock option activity under the Company&#x2019;s equity incentive plans (in thousands, except per share data):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:90.058%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Average&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Remaining&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Average&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Contractual&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Aggregate&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Number of&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Exercise Price&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Life&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Intrinsic&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Stock Options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Per Share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;(in years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&#160;&#160;Value &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:5.2pt;font-weight:700;line-height:100%;position:relative;top:-2.8pt;vertical-align:baseline"&gt;(1)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,648&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;17.46&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,423&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;56.04&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Exercised&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(721)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9.28&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Canceled&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(63)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;35.74&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;29.31&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7.5&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;325,828&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Vested and expected to vest as of&#160;December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,028&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;28.64&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7.4&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;321,015&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Options exercisable as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;14.04&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;218,143&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="27" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:112%"&gt;(1) Amounts represent the difference between the exercise price and the fair market value of common stock at December 31, 2022 of $68.43 per share for all &#x201c;in-the-money&#x201d; options outstanding.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;During the years ended December&#160;31, 2022, 2021 and 2020, total intrinsic value of stock options exercised was $31.0 million, $59.6&#160;million and $6.7&#160;million, respectively. Cash received from employee stock option exercises in 2022, 2021 and 2020 was $6.7&#160;million, $11.2&#160;million and $0.9&#160;million, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Employee Stock Purchase Plans&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The ESPP allows eligible employees to purchase shares of the Company&#x2019;s common stock through payroll deductions of up to 15% of their eligible compensation subject to certain Internal Revenue Code limitations. In addition, participants may purchase up to 2,000 shares of common stock in each offering period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The offering periods under the ESPP are two six-month offering periods from August 15&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; through February 14&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; and February 15&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; through August 14&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; of each year. The price of common stock purchased under the ESPP is 85% of the lower of the fair market value of the common stock on the commencement date and the end date of each six-month offering period. At the Company&#x2019;s 2022 annual meeting of stockholders, the stockholders approved an increase in the number of shares of common stock issuable under the ESPP by 1.3&#160;million shares. The total shares authorized for issuance under the ESPP increased from 11.1&#160;million shares to 12.4&#160;million shares. As of December&#160;31, 2022, there were 4.7&#160;million shares available for issuance under the ESPP. During the year ended December&#160;31, 2022, 0.2&#160;million shares were purchased under the ESPP. As of December&#160;31, 2022, unrecognized stock-based compensation expense of $0.4&#160;million related to the ESPP is expected to be recognized over a remaining service period of 0.1 years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The NQ ESPP allows eligible employees to purchase shares of the Company&#x2019;s common stock through payroll deductions of up to 25% of their eligible compensation. Eligible employees have the right to (a) purchase the maximum number of whole shares of common stock that can be purchased with the elected payroll deductions during each offering period for which the employee is enrolled at a purchase price equal to the closing price of the Company&#x2019;s common stock on the last day of such offering period and (b) receive an equal number of shares of the Company&#x2019;s common stock that are subject to a risk of forfeiture in the event the employee terminates employment within the one year period immediately following the purchase date. Beginning in the second quarter of 2022, the NQ ESPP provides quarterly offering periods from May 8&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; through August 7&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;, August 8&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; through November 7&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;, November 8&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; through February 7&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; and February 8&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; through May 7&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;of each year. A transition period began on May 15&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; and ended on August 7&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;th&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;. At the Company&#x2019;s 2022 annual meeting of stockholders, the stockholders approved an increase in the number of shares of common stock issuable under the NQ ESPP by 0.8&#160;million shares. The maximum number of shares of common stock currently authorized for issuance under the NQ ESPP is 6.3&#160;million shares, with a maximum of 0.3&#160;million shares allocated per purchase period. As of December&#160;31, 2022, there were 3.0&#160;million shares available for issuance under the NQ ESPP, including the stockholder-approved 0.8&#160;million share increase. During the year ended December&#160;31, 2022, 0.6&#160;million shares were purchased and issued. As of December&#160;31, 2022, unrecognized stock-based compensation expense of $9.3&#160;million related to the NQ ESPP is expected to be recognized over a remaining weighted-average service period of 0.8 years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Stock-Based Compensation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes stock-based compensation expense (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:50.215%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.523%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Cost of revenue:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Products&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,666&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;790&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;575&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Services&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,034&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;668&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;450&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Sales and marketing&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,001&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,728&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,273&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Research and development&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,165&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,769&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,736&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;General and administrative&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;17,960&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,275&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,926&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;44,826&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;24,230&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,960&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Income tax benefits recognized&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,501&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;16,929&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the weighted-average grant date fair values of the Company&#x2019;s stock-based awards granted in the periods indicated:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:86.111%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:55.096%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.667%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.633%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.667%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.633%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.667%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.637%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;31.86&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;26.55&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8.55&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;18.51&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12.93&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5.52&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;NQ ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;52.91&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;55.50&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19.40&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company values employee stock purchase rights under the NQ ESPP at the closing market price of the Company&#x2019;s common stock on the date of grant.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company estimates the fair value of stock options and employee stock purchase right under the ESPP at the grant date using the Black-Scholes option-pricing model. This model requires the use of the following assumptions:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(i)&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:8.57pt"&gt;Expected volatility of the Company&#x2019;s common stock &#x2013; The Company computes its expected volatility assumption based on a blended volatility (50% historical volatility and 50% implied volatility from traded options on the Company&#x2019;s common stock). The selection of a blended volatility assumption was based upon the Company&#x2019;s assessment that a blended volatility is more representative of the Company&#x2019;s future stock price trend as it weighs the historical volatility with the future implied volatility.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(ii)&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:5.8pt"&gt;Expected life of the option award &#x2013; Represents the weighted-average period that the stock options are expected to remain outstanding. The Company&#x2019;s computation of expected life utilizes the simplified method in accordance with Staff Accounting Bulletin No.&#160;110 due to the lack of sufficient historical exercise data to provide a reasonable basis upon which to estimate expected term.&#160;The mid-point between the vesting date and the expiration date is used as the expected term under this method.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(iii)&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:3.03pt"&gt;Expected dividend yield &#x2013; The assumption is zero based on the Company&#x2019;s history of not paying dividends and no future expectations of dividend payouts.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;padding-left:40.5pt;text-indent:-18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(iv)&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:3.57pt"&gt;Risk-free interest rate &#x2013; Based on the U.S. Treasury yield curve in effect at the time of grant with maturities approximating the grant&#x2019;s expected life.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the weighted-average assumptions used in estimating the grant-date fair value of stock options and of each employee&#x2019;s purchase right under the ESPP in the periods indicated:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Stock Options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected volatility&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;58&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;56&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;53&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected life (years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.0&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.1&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Risk-free interest rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3.15&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.11&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.48&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected volatility&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;63&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;70&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected life (years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.5&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.5&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.4&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Risk-free interest rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.16&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.05&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.12&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In addition, the Company applies an estimated forfeiture rate to awards granted and records stock-based compensation expense only for those awards that are expected to vest. Forfeiture rates are estimated at the time of grant based on the Company&#x2019;s historical experience. Further, to the extent the Company&#x2019;s actual forfeiture rate is different from management&#x2019;s estimate, stock-based compensation is adjusted accordingly.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, unrecognized stock-based compensation expense by award type, net of estimated forfeitures, and their expected weighted-average recognition periods are summarized in the following table (in thousands).&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:63.304%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:58.715%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.340%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.451%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.340%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Stock Option&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;ESPPs&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Unrecognized stock-based compensation expense&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;73,095&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,781&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Weighted-average amortization period (in years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.3&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.8&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:1pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company expects to recognize stock-based compensation expense of $37.2 million in 2023, $22.0 million in 2024, $16.0 million in 2025 and $7.7 million in 2026. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Shares Reserved for Future Issuance &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, the Company had common shares reserved for future issuance as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:77.631%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:82.704%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.871%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.025%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock options outstanding&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Shares available for future grant under 2019 Plan&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,986&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Shares available for future issuance under ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,712&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Shares available for future issuance under NQ ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,043&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 12.25pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;22,028&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ShareholdersEquityAndShareBasedPaymentsTextBlock>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzE2Mg_a41d7077-3872-4311-b6db-2cb7b1959931"
      unitRef="shares">5000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzE2Mg_be6ae076-d8d3-4ccf-9fcb-f376c3f37131"
      unitRef="shares">5000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMzU_2e89c7dd-7479-46cf-bacd-53b34b28f830"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMzU_44134196-220e-4e7f-adc5-32c791377611"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMzU_8125353f-1c57-4ac6-a8c9-739c11c3e91f"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMzU_b5acc682-1add-4af0-a2b3-a6fd8860275b"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:CommonStockDividendsPerShareDeclared
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNzE_c0d0755d-632b-4f61-a63d-75a14dbc4f73"
      unitRef="usdPerShare">0</us-gaap:CommonStockDividendsPerShareDeclared>
    <us-gaap:SaleOfStockNumberOfSharesIssuedInTransaction
      contextRef="i7fadbf2c253d413a88bde1b78e167eca_D20200801-20200831"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzE5MDA_ff836926-657a-4f18-adc1-124b9d531ead"
      unitRef="shares">3220000</us-gaap:SaleOfStockNumberOfSharesIssuedInTransaction>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="ia82b2d49648943eaa5310ec5fb3becca_I20200831"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzE5MzM_4b25d1ca-7ebb-4fd4-8d23-3a4e0ffbde7d"
      unitRef="usdPerShare">20.00</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:SaleOfStockNumberOfSharesIssuedInTransaction
      contextRef="i91bded7562bb4301ad3b554b40d54850_D20200801-20200831"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzIwMzU_cd024d7f-8934-49b9-89fe-3363da17bf55"
      unitRef="shares">420000</us-gaap:SaleOfStockNumberOfSharesIssuedInTransaction>
    <us-gaap:SaleOfStockConsiderationReceivedOnTransaction
      contextRef="i91bded7562bb4301ad3b554b40d54850_D20200801-20200831"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzIwOTE_290174e1-8cb5-4800-8678-a052eca4bdc7"
      unitRef="usd">60100000</us-gaap:SaleOfStockConsiderationReceivedOnTransaction>
    <us-gaap:StockRepurchaseProgramPeriodInForce1
      contextRef="i505f47a2e1ed4f3195b453dfbe6a64f4_D20220701-20220731"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0MzM_d139e841-9587-45a7-b5c9-a46941a6d427">P1Y</us-gaap:StockRepurchaseProgramPeriodInForce1>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="idc3cb693fe5140938ac10dd90b12e4b3_I20220731"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0MzU_1e9aea67-0793-4586-bdf0-f07ee7ba604c"
      unitRef="usd">100000000</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares
      contextRef="i3cbfffa9694a42a389d948ddc37f1e20_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQwNzA_892717ad-1d54-4187-8571-1f24d586b617"
      unitRef="shares">1500000</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
      contextRef="i3cbfffa9694a42a389d948ddc37f1e20_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQxMDI_4f2622d0-7e1a-4163-90de-0c3bf2d63f41"
      unitRef="shares">6000000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant>
    <calx:MinimumExercisePriceOfStockOptionPercent
      contextRef="i41eb5021bb2b41b5b265a980031bec90_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQyMzY_75220fe0-0a11-4cab-b34f-03681a7af0f2"
      unitRef="number">1</calx:MinimumExercisePriceOfStockOptionPercent>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage
      contextRef="i8c139b1f6d274d5e8a525134045a6df8_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQzNjI_b07e076d-cafe-4fa9-9ce0-e873f751c763"
      unitRef="number">0.25</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i75d90d403aa54a2294076893730c0ec6_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQ0ODk_b7e8049a-5a9a-4115-9c26-2071a25e0c9f">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <calx:ContractualTermStockOptions
      contextRef="i41eb5021bb2b41b5b265a980031bec90_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzQ1Mjg_99dc242e-7faa-4df7-8be8-69974e806a48">P10Y</calx:ContractualTermStockOptions>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzU5MzQ_10ed242e-d302-451e-9bd2-122d05f61b01"
      unitRef="shares">700000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzYwMzk_a55ea2f5-eba7-4d52-b2cf-d0887c754f5d"
      unitRef="usdPerShare">36.74</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDgw_780b1b31-972a-40c5-b66a-a539790fb81a">P1Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzYzNjE_bb4d6643-9808-4c27-a94e-946befb519a7"
      unitRef="number">0.80</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzYzOTY_32eafe13-2625-46c8-9b57-6d33120c9127"
      unitRef="number">0.90</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY0MTA_6d184a44-3687-4495-9f8f-f7e4326ae84c"
      unitRef="shares">0</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY0Nzg_ac1cca95-8772-4799-9357-181f0b2ae50b"
      unitRef="number">0.50</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY1Mzk_7807662d-1feb-428c-a24f-8f76e915f9cc"
      unitRef="number">1</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition
      contextRef="ifc83d7d9ef314c2da18ad45d02064e43_I20220228"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY3NTA_163a32c7-0722-4b1e-ae25-8e1605d7cc9f"
      unitRef="number">0.97</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition>
    <calx:PerformanceTargetsServicesConditionPeriod
      contextRef="ic44b83e0b0954d9bb8cedebe7e13f1ee_D20210201-20210228"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDkw_917d1db9-f00b-4414-b029-f3de3905762a">P4Y</calx:PerformanceTargetsServicesConditionPeriod>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage
      contextRef="i965de145a5b34dcd8fa276603435fdac_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY4MTM_27f0dcf1-5da5-4ee8-934b-365a33594379"
      unitRef="number">0.25</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage
      contextRef="i700305bde84145bb849464dd58867c37_D20210201-20210228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzY4OTQ_528e607c-da54-47b4-b6ae-8a9fa3e63c8c"
      unitRef="number">0.75</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i700305bde84145bb849464dd58867c37_D20210201-20210228"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzcwMDA_ee82c4ed-dc9a-44e0-9edf-c1afb03fa93f">P36M</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensation
      contextRef="i638345f07d274c7894c3feb7fb3b1042_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzcxNDE_19b77821-1456-4c93-881b-221310fa26ca"
      unitRef="usd">3600000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="i541d20d065cc4fd69f959b3cae672349_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0NDk_293228c4-930b-4ecc-b8c9-f19dc765a67e"
      unitRef="usd">6300000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="ida3289d8c97f4feda1965fdc60834811_D20220201-20220228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0NjM_6433d6a4-d252-466d-a670-d08231b5b855"
      unitRef="shares">700000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="ida3289d8c97f4feda1965fdc60834811_D20220201-20220228"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0NzY_70b3b7f9-5641-4161-b4df-293a314b017b"
      unitRef="usdPerShare">55.96</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition
      contextRef="i295a35bf54c94432a53d75c53f7fd8cb_I20230228"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk0ODQ_567baf9d-7e06-4380-bd7a-be637bd0742a"
      unitRef="number">1</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition>
    <calx:PerformanceTargetsServicesConditionPeriod
      contextRef="if0e6bad883de4fcf86c4c0bdd31069fb_D20230201-20230228"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk1MzU_1fcb54d3-e4b4-40aa-9ff5-da3abe3ab45e">P4Y</calx:PerformanceTargetsServicesConditionPeriod>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage
      contextRef="iec5297cc8cee403da61498dad383a323_D20230201-20230228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk1MDM_33133a5d-928f-498a-b4c0-cc3aba194e97"
      unitRef="number">0.25</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage
      contextRef="ic11cc38580b54c38bdedf1d2424db347_D20230201-20230228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk1MDg_d89254c9-ff1b-4a2c-82e1-cdf1312ae59f"
      unitRef="number">0.75</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="ic11cc38580b54c38bdedf1d2424db347_D20230201-20230228"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk1MTU_5b97a167-25a1-4459-b3c1-f886361b5209">P36M</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensation
      contextRef="if3854c3da7554041bf128b38014a78ec_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwOTk1MTE2NTk1MjE_6efeca8c-0c9f-4023-a984-2f8bdfb04830"
      unitRef="usd">10100000</us-gaap:ShareBasedCompensation>
    <us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDU1_85c94df3-fccd-487a-b282-7ac5bed84e50">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the stock option activity under the Company&#x2019;s equity incentive plans (in thousands, except per share data):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:90.058%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.585%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Average&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Remaining&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Average&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Contractual&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Aggregate&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Number of&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Exercise Price&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Life&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Intrinsic&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Stock Options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Per Share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;(in years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&#160;&#160;Value &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:5.2pt;font-weight:700;line-height:100%;position:relative;top:-2.8pt;vertical-align:baseline"&gt;(1)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,648&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;17.46&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,423&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;56.04&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Exercised&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(721)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9.28&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Canceled&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(63)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;35.74&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;29.31&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7.5&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;325,828&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Vested and expected to vest as of&#160;December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,028&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;28.64&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7.4&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;321,015&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Options exercisable as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;14.04&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;218,143&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="27" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:112%"&gt;(1) Amounts represent the difference between the exercise price and the fair market value of common stock at December 31, 2022 of $68.43 per share for all &#x201c;in-the-money&#x201d; options outstanding.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzYtMi0xLTEtMzYxOTg_1145cee9-aa4a-4d11-8a7e-2a5f026a9f3b"
      unitRef="shares">6648000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzYtNC0xLTEtMzYxOTg_c54c8b1b-b033-4c63-b0e1-83c31c0e25f7"
      unitRef="usdPerShare">17.46</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzctMi0xLTEtMzYxOTg_a5ee0d53-e542-4bca-b00d-ce88af58fc2c"
      unitRef="shares">2423000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzctNC0xLTEtMzYxOTg_5577b267-edcc-4f99-bb42-dfad445607ec"
      unitRef="usdPerShare">56.04</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzgtMi0xLTEtMzYxOTg_aa8890c0-4f07-4f50-833b-229a08bb6c09"
      unitRef="shares">721000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzgtNC0xLTEtMzYxOTg_91f2378c-f8bb-4dd7-bf4b-4f6b4a0e54d1"
      unitRef="usdPerShare">9.28</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzktMi0xLTEtMzYxOTg_6911c884-442e-4b27-82cf-07af2a3ec25c"
      unitRef="shares">63000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzktNC0xLTEtMzYxOTg_2a842dda-8344-44c4-ba51-85fabc3d46b9"
      unitRef="usdPerShare">35.74</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzExLTItMS0xLTM2MTk4_99284bd4-6a10-470f-9daa-128ee16cc0e3"
      unitRef="shares">8287000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzExLTQtMS0xLTM2MTk4_3d9de76b-e63b-4cca-b1fd-b2a396165d0b"
      unitRef="usdPerShare">29.31</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzExLTYtMS0xLTM2MTk4_dfc6d9ab-3542-4515-a1c6-094e40b9fef5">P7Y6M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzExLTgtMS0xLTM2MTk4_ae9df066-7d99-4af6-87ed-278291878c94"
      unitRef="usd">325828000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEyLTItMS0xLTM2MTk4_8a74d635-8bb7-4a17-be8e-48978fcc5e03"
      unitRef="shares">8028000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEyLTQtMS0xLTM2MTk4_21f49a73-8125-4a04-b746-11c8134f75b7"
      unitRef="usdPerShare">28.64</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEyLTYtMS0xLTM2MTk4_2de17dd9-33ad-4e77-99bc-e2bd8333cfcb">P7Y4M24D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEyLTgtMS0xLTM2MTk4_4392676f-64de-45cc-a96f-33250736bf08"
      unitRef="usd">321015000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEzLTItMS0xLTM2MTk4_05a1ff50-345d-454c-a65d-da7dd8e5b78f"
      unitRef="shares">4010000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEzLTQtMS0xLTM2MTk4_3ef69f85-0565-4793-9526-4f436c523719"
      unitRef="usdPerShare">14.04</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEzLTYtMS0xLTM2MTk4_b417d61c-4270-4efa-a062-cde65880835d">P6Y1M6D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzEzLTgtMS0xLTM2MTk4_92dcee82-ac17-4235-82e7-ef693be10245"
      unitRef="usd">218143000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1>
    <calx:SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1YzI1YTMyMGIwNGE0MWM4YTg0NjYyZTRkZWU4Njg5My90YWJsZXJhbmdlOjVjMjVhMzIwYjA0YTQxYzhhODQ2NjJlNGRlZTg2ODkzXzE1LTAtMS0xLTM2MTk4L3RleHRyZWdpb246MmMyZWRmMWU0MjRhNDZlM2I2ZWY1NWExNDRjZjU5MmFfMTM1_33986a18-a7f4-4f51-ab93-14875e2bba5d"
      unitRef="usdPerShare">68.43</calx:SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc0NzI_8e300819-9db3-41fc-8afe-298af61c26bd"
      unitRef="usd">31000000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc0NzY_4272bd93-f439-480f-bb44-795cba9eb89b"
      unitRef="usd">59600000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc0ODM_0b671b7f-1948-4e0e-a2f8-a1ec267ff0ff"
      unitRef="usd">6700000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc1OTU_7e965b3c-3b1d-4ccb-8a4d-a96d0f8f65a3"
      unitRef="usd">6700000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc1OTk_d16c52c4-0163-4abc-8b7d-39f0eddf54ad"
      unitRef="usd">11200000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc2MDY_49acdfce-6035-4376-9533-9130215ecb59"
      unitRef="usd">900000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate
      contextRef="iee534fe4989d4adfa556c7ec64860bfa_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc3NzQ_50f09694-8233-4fe2-9846-2d0dddbd2e01"
      unitRef="number">0.15</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee
      contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzc5MTM_d9786033-d5c6-48b7-a1a9-d9194d1270c4"
      unitRef="shares">2000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods
      contextRef="iee534fe4989d4adfa556c7ec64860bfa_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzgwMDQ_738fc667-cb35-4521-9577-07ffb86281be"
      unitRef="period">2</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods>
    <calx:SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod
      contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDcx_b7cb3f20-f247-4ba8-a63f-0b540ceb8551">P6M</calx:SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent
      contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzE2NDkyNjc0NTUxNzY_4127732e-bec6-4ffe-a31e-b8a2189b8147"
      unitRef="number">0.85</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent>
    <calx:SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod
      contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDY0_c640f894-ec39-4500-9557-0d40c6410220">P6M</calx:SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized
      contextRef="i880c5d0fdabc49049e2803cb35fd9265_D20190501-20190531"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg0NzU_e01161a9-58d0-4032-b720-ade3fc14cc95"
      unitRef="shares">1300000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized
      contextRef="i0ec7c77a75e44d88b5272edccf8226e0_I20190430"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg1NTc_dade7f94-bd7d-46a8-928e-d31f913fcbaf"
      unitRef="shares">11100000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized
      contextRef="if0e209b492c749879687a6547794124c_I20190531"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg1NzA_1b636a67-78a4-4e0e-adad-37ad07dcb797"
      unitRef="shares">12400000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
      contextRef="iee534fe4989d4adfa556c7ec64860bfa_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg2MDI_ff171273-191b-49b0-b0a8-544157440fad"
      unitRef="shares">4700000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant>
    <us-gaap:StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan
      contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg2Nzc_dbdd4f29-9022-4e09-922f-bc63e12b1ac3"
      unitRef="shares">200000</us-gaap:StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions
      contextRef="iee534fe4989d4adfa556c7ec64860bfa_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg3Nzc_9450d4fa-2c60-43ec-b808-762886f6ddc4"
      unitRef="usd">400000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="i44ecf0f2430144758b1f145ea2273bbc_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg4NjQ_6c4a8527-336e-4f58-9f7f-5f21b5582c50">P0Y1M6D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent
      contextRef="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzg5OTc_91ae3c23-ad49-4de2-ac91-e61f2e8186d2"
      unitRef="number">0.25</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture
      contextRef="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzk1NDM_7d9fbd9b-0dd9-46fb-85ab-d56c24d078d1">P1Y</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized
      contextRef="i5b465428849c4e708a3b9d04506880c1_D20200501-20200531"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzk4OTE_8e627c2b-75a4-4912-aa90-3587cac763e1"
      unitRef="shares">800000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized
      contextRef="i26ca0d92b2424298b0bcea3c569b00ba_I20200531"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMDAy_4beae738-d22f-4b41-8321-9b8047dfd865"
      unitRef="shares">6300000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod
      contextRef="i26ca0d92b2424298b0bcea3c569b00ba_I20200531"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMDMx_a9878fcd-34f7-442f-890b-be50fbfb8da5"
      unitRef="shares">300000</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
      contextRef="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMDkz_014af307-e74c-4696-8e1a-3878e58614ce"
      unitRef="shares">3000000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant>
    <calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares
      contextRef="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMTgw_7133315d-c3d2-4dc8-8b78-c53362f5b50b"
      unitRef="shares">800000</calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward
      contextRef="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMjI1_77420476-6260-4384-81d6-64beabdc5366"
      unitRef="shares">600000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod
      contextRef="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMjI1_89be2776-c058-4006-a433-e55da3d1d829"
      unitRef="shares">600000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions
      contextRef="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwMzIx_2bfcea1b-1a05-41b2-98f9-beb456dbc50c"
      unitRef="usd">9300000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEwNDI4_db204733-25a6-4f73-bb64-f8e2de4797cd">P0Y9M18D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDgx_df90a265-c11f-4d53-be85-e9531572fc3b">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes stock-based compensation expense (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:50.215%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.519%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.523%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Cost of revenue:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Products&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,666&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;790&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;575&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Services&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,034&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;668&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;450&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Sales and marketing&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,001&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,728&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,273&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Research and development&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12,165&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,769&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,736&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;General and administrative&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;17,960&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,275&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,926&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;44,826&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;24,230&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,960&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Income tax benefits recognized&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,501&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;16,929&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i58c539110982492a8e0b62fd8b455319_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzMtMi0xLTEtMzYxOTg_1d1b751c-84ec-4537-bc5b-ed04fde60243"
      unitRef="usd">1666000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="if4be25f0af9f4b0ea5f22877ddbfebd7_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzMtNC0xLTEtMzYxOTg_796e48c0-9e12-4185-8ac4-bd11ff498610"
      unitRef="usd">790000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i72cf599545d14ebc9ce8787ba50c5aa0_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzMtNi0xLTEtMzYxOTg_359c57ee-4dea-4d89-aa59-ea736bff3815"
      unitRef="usd">575000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="idaed2f6c8c27442a8b45142b76ced351_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzQtMi0xLTEtMzYxOTg_65c879ff-bee7-4725-b555-34d9a40b3a96"
      unitRef="usd">1034000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i4106eb5f32cc4149875537163855706f_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzQtNC0xLTEtMzYxOTg_61fcc3fe-91f7-433a-a363-d551aa102f5e"
      unitRef="usd">668000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ic93cf0acaeed4e3b979094ca720d677c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzQtNi0xLTEtMzYxOTg_9ac80b04-b485-4aa6-ab2a-44f3f125a90b"
      unitRef="usd">450000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i7662d716785e4f228c33abfdf3c8f4b3_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzUtMi0xLTEtMzYxOTg_4209bb87-f5fc-4f80-bf59-bd2d9cf93edd"
      unitRef="usd">12001000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i551b31ab695c495abc571c977cc81179_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzUtNC0xLTEtMzYxOTg_09104d62-6b88-4c11-b244-188eb9457a4e"
      unitRef="usd">6728000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ib672ba4f581b4efb88684284d82eeeee_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzUtNi0xLTEtMzYxOTg_02b78550-9d76-4156-b784-11aae0bdd2f1"
      unitRef="usd">4273000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i077d8297ff7e49b0bbfd5fe52a5f1bf7_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzYtMi0xLTEtMzYxOTg_727c5a5d-92d0-424c-9391-0b8c232c2156"
      unitRef="usd">12165000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ic6675333d4254a57862012c889ba560e_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzYtNC0xLTEtMzYxOTg_6e0481f5-2f1f-42d9-9ba1-9beac4a2d759"
      unitRef="usd">6769000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i3a828b5e5a764680970a3d824b40aca7_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzYtNi0xLTEtMzYxOTg_f1470a6f-3f38-42d7-a746-22d3447f9744"
      unitRef="usd">4736000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i44b5a1d07f9948e1b8ee67a159f31b98_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzctMi0xLTEtMzYxOTg_8767e69c-0782-4b39-9e9a-b111e3a837e7"
      unitRef="usd">17960000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="id9c1cab1298a4f73ab040395f2f7faa1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzctNC0xLTEtMzYxOTg_8aa6edfe-ede2-4799-b47f-5d71a17a7b3e"
      unitRef="usd">9275000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ic8e79da6e7d2470fa750cd2afb19e759_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzctNi0xLTEtMzYxOTg_0ce92471-2a2c-4000-aee8-bc7571fc666e"
      unitRef="usd">3926000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzgtMi0xLTEtMzYxOTg_a49ed5ff-cd2b-41c0-8e0a-9445bf3f5576"
      unitRef="usd">44826000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzgtNC0xLTEtMzYxOTg_801f914a-6ec4-445f-aee3-02b3112738b1"
      unitRef="usd">24230000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzgtNi0xLTEtMzYxOTg_bcd7dd60-5d42-4159-955d-1f14716ff065"
      unitRef="usd">13960000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzktMi0xLTEtNDEwNzg_3b4a4dfa-8331-4e04-9e0a-13c59d8febf9"
      unitRef="usd">11501000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzktNC0xLTEtNDEwNzg_d777e2ef-68f0-4580-85c5-b859ea256c4b"
      unitRef="usd">16929000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpkN2Q4ZDk5Y2NmOGE0MzA1OTI4ODFkOWFjYzBiZGExYS90YWJsZXJhbmdlOmQ3ZDhkOTljY2Y4YTQzMDU5Mjg4MWQ5YWNjMGJkYTFhXzktNi0xLTEtNDEwNzg_f5d02f19-cb9b-434e-bcd7-c00e1781d2c0"
      unitRef="usd">0</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense>
    <calx:ScheduleOfGrantDateFairValuesTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDcz_c48a0bd8-b906-4062-b5e5-c96e0b5b7baa">&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the weighted-average grant date fair values of the Company&#x2019;s stock-based awards granted in the periods indicated:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:86.111%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:55.096%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.667%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.633%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.667%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.633%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.667%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.637%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;31.86&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;26.55&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8.55&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;18.51&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;12.93&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5.52&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;NQ ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;52.91&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;55.50&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19.40&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</calx:ScheduleOfGrantDateFairValuesTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzItMi0xLTEtMzYxOTg_a47e118b-6217-45ce-97c6-c3f915e25d41"
      unitRef="usdPerShare">31.86</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzItNC0xLTEtMzYxOTg_e61d5a0c-03da-415d-9345-a9aacc6ba293"
      unitRef="usdPerShare">26.55</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzItNi0xLTEtMzYxOTg_8575f63a-271f-4f13-b846-7438bae45177"
      unitRef="usdPerShare">8.55</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzQtMi0xLTEtMzYxOTg_f5c4e92e-b97a-4b69-88fe-c33c3426b8b4"
      unitRef="usdPerShare">18.51</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="ia769a333e78142368aad724844d01ad9_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzQtNC0xLTEtMzYxOTg_78ea1ea9-86eb-404e-a942-80562b9863cb"
      unitRef="usdPerShare">12.93</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="id42b2b8786cd441ab4f99814e4e629c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzQtNi0xLTEtMzYxOTg_8519a390-b4a2-4ede-b110-bc09d20da1fd"
      unitRef="usdPerShare">5.52</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i528f094095914bb2b53b77fdc1cf04e5_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzUtMi0xLTEtMzYxOTg_cbdbcb92-e504-405c-983c-17d20786da13"
      unitRef="usdPerShare">52.91</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i42bec794c13c4ba7acb3467565058cfc_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzUtNC0xLTEtMzYxOTg_05391af4-ea5e-4831-957d-4e1917ae8302"
      unitRef="usdPerShare">55.50</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i7c7d626e2ca643048ffb47a60d526ee3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo5ODAzYTQ1ODMxMDk0Yzk5ODdiODdiOTYzZjk2Yjc5YS90YWJsZXJhbmdlOjk4MDNhNDU4MzEwOTRjOTk4N2I4N2I5NjNmOTZiNzlhXzUtNi0xLTEtMzYxOTg_dadac7fb-f150-4e90-993c-5fdd3205c928"
      unitRef="usdPerShare">19.40</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <calx:PercentOfHistoricalVolatility
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMjA1_ce83c2e5-a0c2-45ff-a634-c2298f115976"
      unitRef="number">0.50</calx:PercentOfHistoricalVolatility>
    <calx:PercentOfImpliedVolatility
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzExMjM0_0f8f9ed5-92bb-44e6-acba-1ad59093e4e7"
      unitRef="number">0.50</calx:PercentOfImpliedVolatility>
    <us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDk2_740f6562-5f3e-4334-87fc-1b5bd8934e73">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the weighted-average assumptions used in estimating the grant-date fair value of stock options and of each employee&#x2019;s purchase right under the ESPP in the periods indicated:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Stock Options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected volatility&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;58&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;56&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;53&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected life (years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.0&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.1&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Risk-free interest rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3.15&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.11&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.48&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzItMi0xLTEtMzYxOTg_57b918c9-177f-4058-9683-874e22725a26"
      unitRef="number">0.58</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="i67e02cfc4d874cff8afe2659b8d50558_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzItNC0xLTEtMzYxOTg_1f92305b-094f-49fe-9452-92c898eb1d2d"
      unitRef="number">0.56</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="ia0851320733849cd9c11d5811d229fc8_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzItNi0xLTEtMzYxOTg_4297a818-8004-4e3a-bae6-94a2f2906588"
      unitRef="number">0.53</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzMtMi0xLTEtMzYxOTg_66f26228-1148-478d-9474-17d639e6fa86">P6Y1M6D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i67e02cfc4d874cff8afe2659b8d50558_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzMtNC0xLTEtMzYxOTg_76613d3d-3b38-4eb1-8982-e8f6ac552993">P6Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="ia0851320733849cd9c11d5811d229fc8_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzMtNi0xLTEtMzYxOTg_49e470ae-887e-4bca-9c88-9e641448c6ae">P6Y1M6D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzUtMi0xLTEtMzYxOTg_1f13b0a8-a37c-4fa2-92fd-2470c3af55e4"
      unitRef="number">0.0315</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="i67e02cfc4d874cff8afe2659b8d50558_D20210101-20211231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzUtNC0xLTEtMzYxOTg_04b23f2a-6082-42d6-9bd4-3155680fbb09"
      unitRef="number">0.0111</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="ia0851320733849cd9c11d5811d229fc8_D20200101-20201231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTozOWU3ZDJkYzE5OWY0NmVjYTk2ZGZkZjJjZjFmZDI3MS90YWJsZXJhbmdlOjM5ZTdkMmRjMTk5ZjQ2ZWNhOTZkZmRmMmNmMWZkMjcxXzUtNi0xLTEtMzYxOTg_b491e98f-6dbd-4912-85fc-15844c1de967"
      unitRef="number">0.0048</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNTA4_9be2f0c7-59d2-44ec-bb1a-459a8c44c4ec">&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected volatility&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;62&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;63&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;70&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Expected life (years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.5&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.5&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.4&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Risk-free interest rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.16&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.05&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.12&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzItMi0xLTEtMzYxOTg_d5c645a8-3cfa-4043-8ead-f412f70c9d55"
      unitRef="number">0.62</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="ia769a333e78142368aad724844d01ad9_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzItNC0xLTEtMzYxOTg_ea313239-8e3c-4376-be65-f6be2adaad34"
      unitRef="number">0.63</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="id42b2b8786cd441ab4f99814e4e629c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzItNi0xLTEtMzYxOTg_3cee71f0-1aaa-476e-8182-ee2d33aa0680"
      unitRef="number">0.70</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzMtMi0xLTEtMzYxOTg_7d72d71a-4411-4e80-9f66-77553f98db32">P0Y6M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="ia769a333e78142368aad724844d01ad9_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzMtNC0xLTEtMzYxOTg_eefa2467-d8c4-414d-ad73-b7f88ff3ca8b">P0Y6M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="id42b2b8786cd441ab4f99814e4e629c3_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzMtNi0xLTEtMzYxOTg_cbe9d998-b2fd-4fce-9049-f1b7f2aa3157">P0Y4M24D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzUtMi0xLTEtMzYxOTg_33215b42-2e6e-4932-9c5d-2a5154c82c61"
      unitRef="number">0.0216</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="ia769a333e78142368aad724844d01ad9_D20210101-20211231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzUtNC0xLTEtMzYxOTg_9c7d370d-521e-4a5e-88b1-f0844de14b78"
      unitRef="number">0.0005</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="id42b2b8786cd441ab4f99814e4e629c3_D20200101-20201231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo1NzM3ZjNiZDgxNWU0ZTM5OTJiYjM5YTNiMDc1ZjUwZS90YWJsZXJhbmdlOjU3MzdmM2JkODE1ZTRlMzk5MmJiMzlhM2IwNzVmNTBlXzUtNi0xLTEtMzYxOTg_dedbebd5-4c00-4af2-8c8f-b63e11a9ede6"
      unitRef="number">0.0012</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNDY4_9038879d-bd24-45cd-9fa5-c5f585fad517">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, unrecognized stock-based compensation expense by award type, net of estimated forfeitures, and their expected weighted-average recognition periods are summarized in the following table (in thousands).&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:63.304%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:58.715%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.340%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.451%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.340%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.454%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Stock Option&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;ESPPs&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Unrecognized stock-based compensation expense&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;73,095&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;9,781&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Weighted-average amortization period (in years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.3&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.8&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="ic1895f9b31ae4e18a52aedee0737e67e_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo2ZTk0MTU0M2Y0YmQ0MGE4OTZiNjU3YTc3MGJkYTA1ZC90YWJsZXJhbmdlOjZlOTQxNTQzZjRiZDQwYTg5NmI2NTdhNzcwYmRhMDVkXzEtMi0xLTEtMzYxOTg_e1c8fc7a-0252-4a9c-acbf-b76f74be2174"
      unitRef="usd">73095000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="i6b7705e9c54642b2a6c0b775486df247_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo2ZTk0MTU0M2Y0YmQ0MGE4OTZiNjU3YTc3MGJkYTA1ZC90YWJsZXJhbmdlOjZlOTQxNTQzZjRiZDQwYTg5NmI2NTdhNzcwYmRhMDVkXzEtNi0xLTEtMzYxOTg_f915ecf5-3771-4076-b5ef-705b4e783e4b"
      unitRef="usd">9781000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo2ZTk0MTU0M2Y0YmQ0MGE4OTZiNjU3YTc3MGJkYTA1ZC90YWJsZXJhbmdlOjZlOTQxNTQzZjRiZDQwYTg5NmI2NTdhNzcwYmRhMDVkXzItMi0xLTEtMzYxOTg_c1498a02-6081-4ce5-916f-ee02bb896372">P2Y3M18D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTo2ZTk0MTU0M2Y0YmQ0MGE4OTZiNjU3YTc3MGJkYTA1ZC90YWJsZXJhbmdlOjZlOTQxNTQzZjRiZDQwYTg5NmI2NTdhNzcwYmRhMDVkXzItNi0xLTEtMzYxOTg_f2115b46-3716-477d-a44b-c42f31c6172b">P0Y9M18D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzMjY4_c3adbc88-eff9-49e3-ae0f-059bf2597f54"
      unitRef="usd">37200000</calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth>
    <calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzMjgw_a1737aa0-3b34-4e01-9f0c-23c46a1b2889"
      unitRef="usd">22000000</calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo>
    <calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzMjky_d8f20391-6a83-4b59-8998-5545c8df0bb1"
      unitRef="usd">16000000</calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree>
    <calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzMzA3_b991db0e-c98a-4392-9861-d4496e0da734"
      unitRef="usd">7700000</calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour>
    <calx:SharesReservedForFutureIssuanceTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90ZXh0cmVnaW9uOmMwYTlkNjE3MjQ5ODQ3YmE5NDhhZWJhYmYyMTlmMThlXzEzNTAy_fb6afd32-d88e-4467-b2aa-e5535cebb31c">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Shares Reserved for Future Issuance &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, the Company had common shares reserved for future issuance as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:77.631%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:82.704%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.871%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.025%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock options outstanding&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Shares available for future grant under 2019 Plan&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5,986&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Shares available for future issuance under ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,712&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Shares available for future issuance under NQ ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,043&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 12.25pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;22,028&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</calx:SharesReservedForFutureIssuanceTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpiZDg5ZDcyOTgwYTY0ZWU1YTk0NTViMDIyMjRiNmNiNy90YWJsZXJhbmdlOmJkODlkNzI5ODBhNjRlZTVhOTQ1NWIwMjIyNGI2Y2I3XzItMi0xLTEtMzYxOTg_d2ac7847-67e7-444e-8536-bdff77f90ec5"
      unitRef="shares">8287000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
      contextRef="i1c63790a858946a996ca1299276c0a06_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpiZDg5ZDcyOTgwYTY0ZWU1YTk0NTViMDIyMjRiNmNiNy90YWJsZXJhbmdlOmJkODlkNzI5ODBhNjRlZTVhOTQ1NWIwMjIyNGI2Y2I3XzMtMi0xLTEtMzYxOTg_e331859f-01c3-4c54-b213-1ca0206cd8ea"
      unitRef="shares">5986000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant>
    <us-gaap:CommonStockCapitalSharesReservedForFutureIssuance
      contextRef="i6b7705e9c54642b2a6c0b775486df247_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpiZDg5ZDcyOTgwYTY0ZWU1YTk0NTViMDIyMjRiNmNiNy90YWJsZXJhbmdlOmJkODlkNzI5ODBhNjRlZTVhOTQ1NWIwMjIyNGI2Y2I3XzQtMi0xLTEtMzYxOTg_47983090-4a50-40e5-b162-087d8bbcd775"
      unitRef="shares">4712000</us-gaap:CommonStockCapitalSharesReservedForFutureIssuance>
    <us-gaap:CommonStockCapitalSharesReservedForFutureIssuance
      contextRef="i0986e5e1ce1a47cc98bf9ebd29d80c03_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpiZDg5ZDcyOTgwYTY0ZWU1YTk0NTViMDIyMjRiNmNiNy90YWJsZXJhbmdlOmJkODlkNzI5ODBhNjRlZTVhOTQ1NWIwMjIyNGI2Y2I3XzUtMi0xLTEtMzYxOTg_51e05359-a832-4642-9827-5c42b65ac7c7"
      unitRef="shares">3043000</us-gaap:CommonStockCapitalSharesReservedForFutureIssuance>
    <us-gaap:CommonStockCapitalSharesReservedForFutureIssuance
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDMvZnJhZzpjMGE5ZDYxNzI0OTg0N2JhOTQ4YWViYWJmMjE5ZjE4ZS90YWJsZTpiZDg5ZDcyOTgwYTY0ZWU1YTk0NTViMDIyMjRiNmNiNy90YWJsZXJhbmdlOmJkODlkNzI5ODBhNjRlZTVhOTQ1NWIwMjIyNGI2Y2I3XzYtMi0xLTEtMzYxOTg_2939935b-2e75-4071-b498-1e51211ccb10"
      unitRef="shares">22028000</us-gaap:CommonStockCapitalSharesReservedForFutureIssuance>
    <us-gaap:CompensationAndEmployeeBenefitPlansTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDkvZnJhZzphYzU4Y2VkYTQ2YzM0YTJlOWMxMzgwYjJjYjUyYWVmNS90ZXh0cmVnaW9uOmFjNThjZWRhNDZjMzRhMmU5YzEzODBiMmNiNTJhZWY1XzU3Mw_82928f65-4afe-4458-b7c0-392a8a825cc3">Employee Benefit PlanThe Company sponsors a 401(k) tax-deferred savings plan for all employees who meet certain eligibility requirements. Participants may contribute, on a pre-tax basis, a percentage of their annual compensation, but not to exceed a maximum contribution amount pursuant to Section&#160;401(k) of the Internal Revenue Code. The Company, at the discretion of the Board of Directors, may make additional matching contributions on behalf of the participants. The Company made matching contributions totaling $4.1 million, $3.2 million and $2.7 million in 2022, 2021 and 2020, respectively.</us-gaap:CompensationAndEmployeeBenefitPlansTextBlock>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDkvZnJhZzphYzU4Y2VkYTQ2YzM0YTJlOWMxMzgwYjJjYjUyYWVmNS90ZXh0cmVnaW9uOmFjNThjZWRhNDZjMzRhMmU5YzEzODBiMmNiNTJhZWY1XzUyNg_90b6ce73-b1ba-4247-90e6-96f32f395e35"
      unitRef="usd">4100000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDkvZnJhZzphYzU4Y2VkYTQ2YzM0YTJlOWMxMzgwYjJjYjUyYWVmNS90ZXh0cmVnaW9uOmFjNThjZWRhNDZjMzRhMmU5YzEzODBiMmNiNTJhZWY1XzUzMA_528a1af2-8368-408a-ab9a-35353243cc21"
      unitRef="usd">3200000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMDkvZnJhZzphYzU4Y2VkYTQ2YzM0YTJlOWMxMzgwYjJjYjUyYWVmNS90ZXh0cmVnaW9uOmFjNThjZWRhNDZjMzRhMmU5YzEzODBiMmNiNTJhZWY1XzUzNw_57ef8fec-4e4a-47bf-8e65-66df59fa04df"
      unitRef="usd">2700000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:ComprehensiveIncomeNoteTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90ZXh0cmVnaW9uOjdjMTg5MzFkZDcxODQ5NzFiMGI5YmQzOTBhYThiMDI2XzczOA_93c88a4b-747f-4a6d-aa7d-f041ec8d79cd">Accumulated Other Comprehensive Loss&lt;div style="margin-top:6pt;text-indent:4.5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The table below summarizes the changes in accumulated other comprehensive loss by component:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:80.263%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:51.905%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.710%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.561%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.803%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.654%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.803%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.564%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized Gains and Losses on Available-for-Sale Marketable Securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Foreign Currency Translation Adjustments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(191)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(191)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other comprehensive income (loss)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(179)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;50&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(129)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(179)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(141)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(320)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other comprehensive loss&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,521)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(632)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,153)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,700)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(773)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,473)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Assets and liabilities of the Company&#x2019;s wholly owned foreign subsidiaries are translated from their respective functional currencies at exchange rates in effect at the balance sheet date, and revenue and expenses are translated at the monthly average exchanges rates. These translations result in differences called foreign currency translation adjustments. Realized foreign currency transaction gains or losses were not significant during the years ended December&#160;31, 2022, 2021 and 2020 and are recorded in &#x201c;Other income (expense), net&#x201d; in the Company's Consolidated Statements of Comprehensive Income. Realized gains and losses on sales of available-for-sale marketable securities, if any, are reclassified from accumulated other comprehensive loss to &#x201c;Other income (expense), net&#x201d; in our Consolidated Statements of Comprehensive Income.&lt;/span&gt;&lt;/div&gt;</us-gaap:ComprehensiveIncomeNoteTextBlock>
    <us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90ZXh0cmVnaW9uOjdjMTg5MzFkZDcxODQ5NzFiMGI5YmQzOTBhYThiMDI2Xzc0MQ_12961359-0ff1-4392-b4d4-f609eb212366">&lt;div style="margin-top:6pt;text-indent:4.5pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The table below summarizes the changes in accumulated other comprehensive loss by component:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:80.263%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:51.905%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.710%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.561%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.803%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.654%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.803%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.564%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized Gains and Losses on Available-for-Sale Marketable Securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Foreign Currency Translation Adjustments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(191)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(191)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other comprehensive income (loss)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(179)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;50&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(129)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(179)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(141)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(320)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other comprehensive loss&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,521)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(632)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,153)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,700)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(773)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,473)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock>
    <us-gaap:StockholdersEquity
      contextRef="ib254f0683dd74e86af161b45013b2484_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzMtMi0xLTEtMzYxOTg_eaff98ff-837d-4023-acff-1a52cec5a6a4"
      unitRef="usd">0</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i960b09b6825f4607b4d06a80a878fbdb_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzMtNC0xLTEtMzYxOTg_2c6b0282-f8a5-4799-ae3e-1695b52384f2"
      unitRef="usd">-191000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i70828112df2e4dc0aacf44aeade1a12c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzMtNi0xLTEtMzYxOTg_43a360c3-0f92-4427-b0e1-d71e78822128"
      unitRef="usd">-191000</us-gaap:StockholdersEquity>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i0735e262a99c4c5789bcfd438e2a271f_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzQtMi0xLTEtMzYxOTg_2eb3c012-1cc3-4f9a-8160-0a9b2f82031b"
      unitRef="usd">-179000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="if64a3a711a7c4298ad36afd715aa0bb7_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzQtNC0xLTEtMzYxOTg_9840535f-409b-4d34-aa8d-83d767e903ea"
      unitRef="usd">50000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzQtNi0xLTEtMzYxOTg_05d0da48-6523-4f28-9cea-5ce374095b0b"
      unitRef="usd">-129000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:StockholdersEquity
      contextRef="ief77c956212749c98a1e47bc2259eed1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzUtMi0xLTEtMzYxOTg_50dd8804-e250-4ac7-9056-ac04dc317d7c"
      unitRef="usd">-179000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ia6a7a2e1b59f47d885453b2b96588acc_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzUtNC0xLTEtMzYxOTg_f008578b-6c03-4b2c-a6cb-157865b4296d"
      unitRef="usd">-141000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i7b351fe8ba1143289315d78b03323c97_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzUtNi0xLTEtMzYxOTg_1a61f658-28ce-48a0-94d5-b1abea66844c"
      unitRef="usd">-320000</us-gaap:StockholdersEquity>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i12575da023634f6cb1d81df6e92df5a7_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzYtMi0xLTEtMzYxOTg_3220f09e-72ea-490d-8299-3fb5213c3f8c"
      unitRef="usd">-1521000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i388a82dc33064d18880924884eb0f3c6_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzYtNC0xLTEtMzYxOTg_947aafc0-ea07-4d05-8ede-22bdf36260d1"
      unitRef="usd">-632000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzYtNi0xLTEtMzYxOTg_d3b7cb07-e0c4-485a-9c42-fc1510b8de41"
      unitRef="usd">-2153000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:StockholdersEquity
      contextRef="ia3ff94b23a2c4e91a27bf12f2f3e6231_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzctMi0xLTEtMzYxOTg_61984890-f518-420c-b44a-4806f098dff8"
      unitRef="usd">-1700000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ic9b55f5c1eeb41c79688d7363a1baa49_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzctNC0xLTEtMzYxOTg_aa65ca89-de0b-4aeb-aab1-4dbb6664d84f"
      unitRef="usd">-773000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i94330ed0d9cb44ad89b11f0416a40439_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTIvZnJhZzo3YzE4OTMxZGQ3MTg0OTcxYjBiOWJkMzkwYWE4YjAyNi90YWJsZTphM2FlYWRlOGY4NTA0YjAxYjg3MGI1MGJiMTdlNWY1OS90YWJsZXJhbmdlOmEzYWVhZGU4Zjg1MDRiMDFiODcwYjUwYmIxN2U1ZjU5XzctNi0xLTEtMzYxOTg_49c64e66-193d-4285-a26b-b2b2dc839aaf"
      unitRef="usd">-2473000</us-gaap:StockholdersEquity>
    <us-gaap:IncomeTaxDisclosureTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMjA_97b86f68-b9f6-4e0f-a927-22ffe4829c54">Income Taxes &lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The domestic and foreign components of income before incomes taxes were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Domestic&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;51,442&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;70,776&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;33,777&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,600&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,878&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;507&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;54,042&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;72,654&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;34,284&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="text-indent:18pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-indent:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Income taxes consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,671&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,818&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;285&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;874&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;438&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;507&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current income tax&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,256&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;792&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,336&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(157,355)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4,372)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(11,631)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred income tax&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,932&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(168,980)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 37pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,032&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(165,724)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The differences between the statutory and effective tax rates, expressed as a percentage of net income before income taxes, were as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Federal statutory rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Impact of state taxes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(15.6)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign operations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;R&amp;amp;D tax credits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(7.4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4.8)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign income inclusion&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock-based compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(12.8)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other permanent items&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Tax true-up&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4.0)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(208.3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(48.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net operating loss expiration / attribute expiration&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5.5&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(13.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;37.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Base erosion anti-abuse tax&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.8&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;24.1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(228.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.3&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The significant components of the Company&#x2019;s deferred tax assets were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.610%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.235%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred tax assets:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net operating loss carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;44,189&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;82,672&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Tax credit carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;56,717&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;52,538&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Accruals and reserves&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,679&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,302&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred revenue&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,156&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,351&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock-based compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,417&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,921&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Capitalized R&amp;amp;D&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;67,932&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;38,842&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Gross deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;201,090&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;200,626&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(29,914)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(29,236)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;171,176&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;171,390&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred tax liabilities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Fixed assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,648)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,511)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Intangible assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,497)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(917)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total deferred tax liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4,145)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,428)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 25.75pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;167,031&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;168,962&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:1pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;All deferred taxes, along with any related valuation allowance, are classified in the Consolidated Balance Sheet as long-term.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A valuation allowance is required when, based upon an assessment of various factors, including recent operating loss history, anticipated future earnings, and prudent and reasonable tax planning strategies, it is more likely than not that some portion of the deferred tax assets will not be realized. At each reporting period, the Company assesses the estimated future realizability of the gross carrying value of its deferred tax assets. The Company&#x2019;s periodic assessments take into consideration both positive evidence (future profitability projections for example and recent financial performance) and negative evidence (historical financial performance for example) as it relates to evaluating the future recoverability of its deferred tax assets. During 2021, the Company released its valuation allowance for federal and state (with the exception of California) deferred tax assets that are more likely than not to be realized, primarily as a result of actual and projected increases in U.S. profitability in the current and future periods. In performing its analysis, the Company used the most updated plans and estimates that it currently uses to manage the underlying business and calculated the ability to utilize its deferred tax assets. The valuation allowance increased by $0.7&#160;million from 2021 to 2022. The Company continues to maintain a valuation allowance of $29.9&#160;million on certain U.S. federal and state deferred tax assets that the Company believes are not more likely than not to be realized in future periods.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, the Company had U.S. federal and state net operating losses of approximately $205.2&#160;million and $24.0&#160;million, respectively. The U.S. federal net operating loss carryforwards will expire at various dates through 2039 if not utilized. The state net operating loss carryforwards will expire at various dates through 2039 if not utilized. Additionally, the Company has U.S. federal, California and other U.S. states research and development credits of approximately $40.7&#160;million, $47.0&#160;million and $2.7&#160;million as of December&#160;31, 2022, respectively. The U.S. federal research and development credits have begun to expire in 2022 and will continue to expire at various dates through 2042. The California research and development credits have no expiration date. The credits related to other various U.S. states have begun to expire and will continue to expire at various dates through 2036.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Uncertain Tax Positions&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;ASC 740, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;&#x201c;Income Taxes,&#x201d;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; prescribes a recognition threshold and measurement attribute to the financial statement recognition and measurement of a tax position taken or expected to be taken in a tax return. The guidance also provides guidance on derecognition, classification, accounting in interim periods and disclosure requirements for uncertain tax positions. The standard requires the Company to recognize the financial statement effects of an uncertain tax position when it is more likely than not that such position will be sustained upon audit. The Company recognizes accrued interest and penalties related to unrecognized tax benefits as interest expense and income tax expense, respectively, in its Consolidated Statements of Comprehensive Income.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table reconciles the Company&#x2019;s unrecognized tax benefits (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.610%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.235%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at beginning of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,516&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;Reduction for tax positions related to prior year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(905)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,427)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;Additions for tax positions related to prior year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,232&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,947&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;Additions for tax positions related to current year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,896&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,956&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at end of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;29,215&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022 and 2021, the Company had unrecognized tax benefits of $29.2&#160;million and $26.0&#160;million, respectively, $15.3&#160;million of which would affect the Company&#x2019;s effective tax rate if recognized. There were no accrued interest or penalties for uncertain income tax as of December&#160;31, 2022.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company files tax returns in the United States and various state jurisdictions, China, India and the United Kingdom. The tax years 2000 through 2021 remain open and subject to examination by the appropriate governmental agencies due to tax attribute carryforwards.&lt;/span&gt;&lt;/div&gt;</us-gaap:IncomeTaxDisclosureTextBlock>
    <us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMjU_cabe52d2-f5f9-4d22-8023-2ddf8b873e66">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The domestic and foreign components of income before incomes taxes were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Domestic&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;51,442&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;70,776&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;33,777&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,600&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,878&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;507&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;54,042&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;72,654&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;34,284&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzItMi0xLTEtMzYxOTg_dc0ca780-f4e2-469e-b4aa-94aa285f418c"
      unitRef="usd">51442000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzItNC0xLTEtMzYxOTg_ea59f2f3-78d8-4aab-a56e-d9e80bb53830"
      unitRef="usd">70776000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzItNi0xLTEtMzYxOTg_806b3a7f-9dae-4f08-8867-eb71bb382b92"
      unitRef="usd">33777000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzMtMi0xLTEtMzYxOTg_50fd12e0-79da-465e-a95d-face0431eaeb"
      unitRef="usd">2600000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzMtNC0xLTEtMzYxOTg_a54e0dae-281f-40ce-91c3-e2a30e85e860"
      unitRef="usd">1878000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzMtNi0xLTEtMzYxOTg_7705947f-e75b-4d2b-9b75-c69d6e6ff7e3"
      unitRef="usd">507000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzQtMi0xLTEtMzYxOTg_d3133df9-b25c-4ec1-b68b-2d334b741201"
      unitRef="usd">54042000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzQtNC0xLTEtMzYxOTg_21aeabca-1568-4c32-950e-8f3ec203feaa"
      unitRef="usd">72654000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTpiYzRhOTQ0OTc4ODg0Mjg3OTYwMzA4Yjg1NThjZDMxYy90YWJsZXJhbmdlOmJjNGE5NDQ5Nzg4ODQyODc5NjAzMDhiODU1OGNkMzFjXzQtNi0xLTEtMzYxOTg_9f3ad745-1992-4bde-a4ce-cafe8383a034"
      unitRef="usd">34284000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMTY_fac6c147-2743-4428-bf4c-1f90aeed145b">&lt;div style="margin-top:9pt;text-indent:9pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Income taxes consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,671&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,818&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;285&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;874&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;438&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;507&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Current income tax&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,256&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;792&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6,336&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(157,355)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4,372)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(11,631)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred income tax&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,932&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(168,980)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;8&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 37pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,032&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(165,724)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtMi0xLTEtNDEwODA_9cb92e99-5dd1-4c7d-a1e1-e945b254ba1b"
      unitRef="usd">3671000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtNC0xLTEtNDEwODA_9d2b04bd-9994-4dac-b49f-1fc0266e781e"
      unitRef="usd">0</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtNi0xLTEtNDEwODA_f26d5b28-2638-4523-9b61-0f8e157129cf"
      unitRef="usd">0</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtMi0xLTEtMzYxOTg_cce07ec3-bf1c-46f0-9ee8-ab7eafa5470a"
      unitRef="usd">6555000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtNC0xLTEtMzYxOTg_62abea2d-d3e4-481f-96cb-0b82bfacaae4"
      unitRef="usd">2818000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzMtNi0xLTEtMzYxOTg_05e8b661-505f-405a-967c-2903f1d487eb"
      unitRef="usd">285000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzQtMi0xLTEtMzYxOTg_20214784-c571-4ac5-b3c6-4abf6d75c2fd"
      unitRef="usd">874000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzQtNC0xLTEtMzYxOTg_4436e76c-c31e-425c-b65a-a0049a47a3cd"
      unitRef="usd">438000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzQtNi0xLTEtMzYxOTg_7ec5cf3b-bfe9-4462-bff3-b61dc0480a43"
      unitRef="usd">507000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzUtMi0xLTEtMzYxOTg_e0230373-fbaa-4dbb-b390-86bd6bd1b43c"
      unitRef="usd">11100000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzUtNC0xLTEtMzYxOTg_96ca0dc9-06f5-42be-9b62-5108e70115d3"
      unitRef="usd">3256000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzUtNi0xLTEtMzYxOTg_ca777584-0ff9-4d4e-a549-1555de13e396"
      unitRef="usd">792000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzctMi0xLTEtMzYxOTg_f873b7be-1d08-4d71-b4a8-ba79954269de"
      unitRef="usd">6336000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzctNC0xLTEtMzYxOTg_9d28cb84-ce2d-419a-a499-b7e35338fe9a"
      unitRef="usd">-157355000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzctNi0xLTEtMzYxOTg_d9844223-e25a-4ea2-b7cf-a03431da56ab"
      unitRef="usd">0</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzgtMi0xLTEtMzYxOTg_395512fd-34f0-401b-aa7a-698426eaaf64"
      unitRef="usd">-4372000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzgtNC0xLTEtMzYxOTg_45582e88-e09b-4e69-b7fe-2ed414cc8d58"
      unitRef="usd">-11631000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzgtNi0xLTEtMzYxOTg_8313dd63-1af4-4b3f-a0fe-648da3b76c17"
      unitRef="usd">0</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzktMi0xLTEtMzYxOTg_6cadf060-4e2e-437c-949a-36fec1d6189c"
      unitRef="usd">-32000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzktNC0xLTEtMzYxOTg_3285d07a-4153-4674-89e0-0a263907002f"
      unitRef="usd">6000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzktNi0xLTEtMzYxOTg_77bde7d6-0e87-42bc-b5d6-b61fcb72858d"
      unitRef="usd">8000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzEwLTItMS0xLTM2MTk4_e6692c3f-69f0-457f-8d53-260e22f2d8f2"
      unitRef="usd">1932000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzEwLTQtMS0xLTM2MTk4_f044dd8b-cb87-4565-95ad-8b683dff1a65"
      unitRef="usd">-168980000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzEwLTYtMS0xLTM2MTk4_2b2db676-9c3e-45b9-8e85-2aa71e3ba3a2"
      unitRef="usd">8000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzExLTItMS0xLTM2MTk4_e273ccdb-653e-4102-8729-eeb3de7f5ee4"
      unitRef="usd">13032000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzExLTQtMS0xLTM2MTk4_a2c1ebdb-dc6a-4285-99d2-153e24a29059"
      unitRef="usd">-165724000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTowYjRkN2I5MGFjNTg0MDU5YmQxM2QwZmI2OTgzNzI0My90YWJsZXJhbmdlOjBiNGQ3YjkwYWM1ODQwNTliZDEzZDBmYjY5ODM3MjQzXzExLTYtMS0xLTM2MTk4_d8975609-f3d0-4539-adaa-33e29a41a8f1"
      unitRef="usd">800000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMDA_f6fa31da-ccd7-46d7-9ef2-7c91848a6377">&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The differences between the statutory and effective tax rates, expressed as a percentage of net income before income taxes, were as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Federal statutory rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Impact of state taxes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(15.6)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign operations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;R&amp;amp;D tax credits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(7.4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4.8)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Foreign income inclusion&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock-based compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(12.8)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Other permanent items&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Tax true-up&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(0.4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4.0)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(208.3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(48.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net operating loss expiration / attribute expiration&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;5.5&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(13.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;37.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Base erosion anti-abuse tax&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;6.8&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;24.1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(228.1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2.3&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzItMi0xLTEtMzYxOTg_703dedc2-464a-422e-ab25-21cdab6a0474"
      unitRef="number">0.210</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzItNC0xLTEtMzYxOTg_cad423ad-ea43-490d-8b4d-4934b7a7c38c"
      unitRef="number">0.210</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzItNi0xLTEtMzYxOTg_4ab33594-368d-4473-b480-5b609124954e"
      unitRef="number">0.210</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzMtMi0xLTEtMzYxOTg_04504c9d-54d1-46d6-827a-e3a84e07a407"
      unitRef="number">0.014</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzMtNC0xLTEtMzYxOTg_dc132db8-147b-4001-8774-0f4229d4c58a"
      unitRef="number">-0.156</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzMtNi0xLTEtMzYxOTg_12876404-484e-4d62-ac07-28a1db3d9d5b"
      unitRef="number">0.001</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzQtMi0xLTEtMzYxOTg_9a9addb5-b021-449a-8cd8-b6b1b7ded2c1"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzQtNC0xLTEtMzYxOTg_c3b5b15c-3260-4d0c-aca8-2bf36eba5f34"
      unitRef="number">-0.002</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzQtNi0xLTEtMzYxOTg_0addd5ef-a550-4e51-8a27-4aff60f9f179"
      unitRef="number">0.006</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzUtMi0xLTEtMzYxOTg_675b8848-7cce-4daa-a771-69225346e013"
      unitRef="number">0.074</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzUtNC0xLTEtMzYxOTg_5bce7984-14e8-40f2-abb2-49ed53b03c30"
      unitRef="number">0.014</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzUtNi0xLTEtMzYxOTg_12aaaf35-afd7-4474-a86d-4afdabdb0de2"
      unitRef="number">0.048</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationFdiiPercent
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzYtMi0xLTEtMzYxOTg_9369a1f2-5f1c-4d18-8f8e-9ba226d05c6c"
      unitRef="number">0.010</us-gaap:EffectiveIncomeTaxRateReconciliationFdiiPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationFdiiPercent
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzYtNC0xLTEtMzYxOTg_fc7993f7-e014-429f-b4a2-7a62989839cc"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationFdiiPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationFdiiPercent
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzYtNi0xLTEtMzYxOTg_eafba1dd-3522-4955-94a6-98e7db34d578"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationFdiiPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzctMi0xLTEtMzYxOTg_e63c6e2f-c7a4-459a-977a-3218f917f17a"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzctNC0xLTEtMzYxOTg_10eb83b0-4ebb-4ba2-ba80-6f304aa3d3e0"
      unitRef="number">-0.128</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzctNi0xLTEtMzYxOTg_b5719cf9-2cd7-4aec-84a2-394f46e27e93"
      unitRef="number">-0.041</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzgtMi0xLTEtMzYxOTg_c91f46ec-bb4e-439e-a592-31ec1abc1b66"
      unitRef="number">-0.002</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzgtNC0xLTEtMzYxOTg_a6cbe6d7-714e-473c-9a24-f1a3c9eca31a"
      unitRef="number">-0.003</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzgtNi0xLTEtMzYxOTg_52e3fd5e-9e76-47c0-b5eb-5dc3b35a8b4d"
      unitRef="number">0.006</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther>
    <us-gaap:EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzktMi0xLTEtMzYxOTg_ae194d89-b56b-4c80-9cbe-002a8f3a4ca4"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzktNC0xLTEtMzYxOTg_2c2a7c78-7ec6-4017-a959-d0aa5c20ba2a"
      unitRef="number">-0.002</us-gaap:EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzktNi0xLTEtMzYxOTg_a77c0604-11c0-431c-a905-230ef442e889"
      unitRef="number">-0.004</us-gaap:EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEwLTItMS0xLTM2MTk4_d2986867-a39d-40a4-a6df-42e047738344"
      unitRef="number">-0.040</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEwLTQtMS0xLTM2MTk4_2c7add6f-12a4-48a4-97e4-9e4ce9fe7960"
      unitRef="number">-2.083</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEwLTYtMS0xLTM2MTk4_2f54bd32-b198-4c1b-85b9-b0e538b80bb9"
      unitRef="number">-0.481</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <calx:EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzExLTItMS0xLTQwNTA2_22ebf4e0-2a1b-4557-9e71-a8ea3f739258"
      unitRef="number">0.055</calx:EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss>
    <calx:EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzExLTQtMS0xLTQwNTA2_d8d491a6-5a85-41e4-9f5c-086055dcf3c2"
      unitRef="number">-0.131</calx:EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss>
    <calx:EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzExLTYtMS0xLTQwNTA2_7368811b-2e60-4f5b-babd-024bafa6e5c1"
      unitRef="number">0.374</calx:EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss>
    <us-gaap:EffectiveIncomeTaxRateReconciliationBeatPercent
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTItMS0xLTQwNTA2_750e0f67-d7e0-4d66-8ee7-5015584b16cf"
      unitRef="number">0.068</us-gaap:EffectiveIncomeTaxRateReconciliationBeatPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationBeatPercent
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTQtMS0xLTQwNTA2_e4d70053-cb0a-4b38-ba1b-67271c78b685"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationBeatPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationBeatPercent
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTYtMS0xLTQwNTA2_b60671d3-dc29-4ee4-8d78-9c38d3e29d11"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationBeatPercent>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTItMS0xLTM2MTk4_52466b4e-ed4a-497d-8676-c19888eb5ead"
      unitRef="number">0.241</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTQtMS0xLTM2MTk4_748c92db-ba73-49dc-8484-5c1b5e1bb680"
      unitRef="number">-2.281</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo1Y2Y1YTNmZGZjMGE0MDI4ODllMTMwMTc5OGNjOGY0NC90YWJsZXJhbmdlOjVjZjVhM2ZkZmMwYTQwMjg4OWUxMzAxNzk4Y2M4ZjQ0XzEyLTYtMS0xLTM2MTk4_84a0c668-da5d-4771-90e3-0cfb9e0b694c"
      unitRef="number">0.023</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMDQ_c2cd9063-6e22-4dc8-9208-b1974b03211a">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The significant components of the Company&#x2019;s deferred tax assets were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.610%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.235%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred tax assets:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net operating loss carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;44,189&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;82,672&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Tax credit carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;56,717&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;52,538&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Accruals and reserves&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,679&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,302&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred revenue&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;13,156&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;11,351&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Stock-based compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;7,417&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,921&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Capitalized R&amp;amp;D&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;67,932&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;38,842&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Gross deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;201,090&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;200,626&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(29,914)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(29,236)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;171,176&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;171,390&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Deferred tax liabilities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Fixed assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,648)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,511)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Intangible assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,497)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(917)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 25.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Total deferred tax liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(4,145)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(2,428)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt 0 25.75pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;167,031&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;168,962&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzMtMi0xLTEtMzYxOTg_40796e34-0619-48f2-a5ff-7e9b570a4093"
      unitRef="usd">44189000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzMtNC0xLTEtMzYxOTg_4957892c-3188-48dd-b126-5a67d71062cb"
      unitRef="usd">82672000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzQtMi0xLTEtMzYxOTg_ee6b6c4a-9a16-46f6-aeaa-b0b4531d4bde"
      unitRef="usd">56717000</us-gaap:TaxCreditCarryforwardAmount>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzQtNC0xLTEtMzYxOTg_fc5f7c9f-ba25-4ab7-923d-7125a6979bfc"
      unitRef="usd">52538000</us-gaap:TaxCreditCarryforwardAmount>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzYtMi0xLTEtMzYxOTg_50e4deea-33d3-4ce2-92ad-d2f14dce8ee7"
      unitRef="usd">11679000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzYtNC0xLTEtMzYxOTg_513a5c48-317f-4d02-9926-7e963b77d743"
      unitRef="usd">10302000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities>
    <us-gaap:DeferredTaxAssetsDeferredIncome
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzctMi0xLTEtMzYxOTg_126fbf36-3d9d-469e-96ba-ae83a3c9f61d"
      unitRef="usd">13156000</us-gaap:DeferredTaxAssetsDeferredIncome>
    <us-gaap:DeferredTaxAssetsDeferredIncome
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzctNC0xLTEtMzYxOTg_58afa9f3-db1f-42ee-aee8-df37b4de1056"
      unitRef="usd">11351000</us-gaap:DeferredTaxAssetsDeferredIncome>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzgtMi0xLTEtMzYxOTg_9225deb8-73f4-4377-9ed5-72f4098ce3e4"
      unitRef="usd">7417000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzgtNC0xLTEtMzYxOTg_e2670c2c-4806-4a16-a9f9-a8021c7b871d"
      unitRef="usd">4921000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <calx:DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzktMi0xLTEtMzYxOTg_97bc2911-3916-47ab-b2d8-a23f6c820822"
      unitRef="usd">67932000</calx:DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts>
    <calx:DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzktNC0xLTEtMzYxOTg_41d2f5c6-1cee-4612-bc06-bb20bf96bcb7"
      unitRef="usd">38842000</calx:DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzExLTItMS0xLTM2MTk4_0650445a-f8cc-4b35-b3aa-21d30996e144"
      unitRef="usd">201090000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzExLTQtMS0xLTM2MTk4_a2bfb597-30d4-4261-9a38-37b9a8ac694e"
      unitRef="usd">200626000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzEyLTItMS0xLTM2MTk4_2edd159c-3d42-4733-b165-f302c8599e47"
      unitRef="usd">29914000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzEyLTQtMS0xLTM2MTk4_e07f96f5-7db8-4174-8270-0bed13ae4fe4"
      unitRef="usd">29236000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzEzLTItMS0xLTM2MTk4_cd4241fa-ff9e-4297-9e2e-b36123828f5c"
      unitRef="usd">171176000</us-gaap:DeferredTaxAssetsNet>
    <us-gaap:DeferredTaxAssetsNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzEzLTQtMS0xLTM2MTk4_ac42e8a4-3803-4c43-9607-e14f2eec45d2"
      unitRef="usd">171390000</us-gaap:DeferredTaxAssetsNet>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE1LTItMS0xLTM2MTk4_57674df4-b4e4-48e2-abbf-ebb6826431a1"
      unitRef="usd">2648000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE1LTQtMS0xLTM2MTk4_e7190cf5-49d2-4767-b500-86d24c225c91"
      unitRef="usd">1511000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE3LTItMS0xLTQwODcz_3f623930-c87e-4f35-aa3c-b108c7ee8c15"
      unitRef="usd">1497000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE3LTQtMS0xLTQwODcz_0af872c8-9e8f-4a42-815f-132cd70e695c"
      unitRef="usd">917000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE4LTItMS0xLTQxMDkz_aa58f001-2b38-4441-873e-3ec605b0a039"
      unitRef="usd">4145000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE4LTQtMS0xLTQxMDkz_def451a5-ce12-43bc-a648-e0376e6441b9"
      unitRef="usd">2428000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredTaxAssetsLiabilitiesNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE5LTItMS0xLTQxMDkz_1d95a8fc-ca2b-4943-88f5-bb146cf7cac6"
      unitRef="usd">167031000</us-gaap:DeferredTaxAssetsLiabilitiesNet>
    <us-gaap:DeferredTaxAssetsLiabilitiesNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZToxOTA1MTNmNGMyYTE0MDE5YTYwZTYyYzRmNmQ4OWMyMi90YWJsZXJhbmdlOjE5MDUxM2Y0YzJhMTQwMTlhNjBlNjJjNGY2ZDg5YzIyXzE5LTQtMS0xLTQxMDkz_59f90680-5b5c-4230-aa3b-e25f2adc3f1a"
      unitRef="usd">168962000</us-gaap:DeferredTaxAssetsLiabilitiesNet>
    <us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzOTgwNDY1MjQ4NzM_6df00d2c-af4c-49cd-8ca3-010805cf3c79"
      unitRef="usd">700000</us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzE5MTA_8b21b654-aa3b-4bc2-b066-3490ae9d0935"
      unitRef="usd">29900000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:OperatingLossCarryforwards
      contextRef="icd96ce43bdbe4439a3f6e14fdc5c6b75_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzIxNDM_4a7e56ba-6429-4cbd-a3d8-9ebb755bacc4"
      unitRef="usd">205200000</us-gaap:OperatingLossCarryforwards>
    <us-gaap:OperatingLossCarryforwards
      contextRef="i7b419d352d354ed585a00db42c0dc4a8_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzIxNTA_99a8d2a2-cd31-4bab-948f-6b60d5f2862d"
      unitRef="usd">24000000</us-gaap:OperatingLossCarryforwards>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="icd96ce43bdbe4439a3f6e14fdc5c6b75_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzI1ODA_fc007d71-c507-41df-a898-16903cd109fa"
      unitRef="usd">40700000</us-gaap:TaxCreditCarryforwardAmount>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="ifb0a61fc15ad461aae58a57e0493b921_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzI1ODQ_e215c6c3-cf31-414d-b4fb-bfd4faa04c01"
      unitRef="usd">47000000</us-gaap:TaxCreditCarryforwardAmount>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="i0e5bdc2854004c18b26a2bdaaed61080_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzI1OTE_12e3d10b-0623-4acd-9dd4-0743cf417fc2"
      unitRef="usd">2700000</us-gaap:TaxCreditCarryforwardAmount>
    <us-gaap:SummaryOfIncomeTaxContingenciesTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzQzMTk_4130322d-713e-4368-bd48-3053d4445014">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table reconciles the Company&#x2019;s unrecognized tax benefits (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.610%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.235%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at beginning of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;23,516&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;Reduction for tax positions related to prior year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(905)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;(1,427)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;Additions for tax positions related to prior year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,232&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,947&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;Additions for tax positions related to current year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,896&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,956&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Balance at end of year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;29,215&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:SummaryOfIncomeTaxContingenciesTextBlock>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzItMi0xLTEtMzYxOTg_04cdffa6-d154-4c0c-a240-5e53484ea5ad"
      unitRef="usd">25992000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzItNC0xLTEtMzYxOTg_1aecbef5-e781-402c-991e-e44ee5a5015e"
      unitRef="usd">23516000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzMtMi0xLTEtMzYxOTg_fa17c355-8347-45f4-932a-3976affe0aa8"
      unitRef="usd">905000</us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzMtNC0xLTEtMzYxOTg_6d84cdeb-1a17-47b4-8395-3535d2bd81d8"
      unitRef="usd">1427000</us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzQtMi0xLTEtMzYxOTg_6340c7a0-bd74-44b8-a18f-f98af8b0ff30"
      unitRef="usd">1232000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzQtNC0xLTEtMzYxOTg_c918e241-e05f-41e1-bf60-4a83e7a8a182"
      unitRef="usd">1947000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzUtMi0xLTEtMzYxOTg_9c979d35-1289-4b1a-b8fc-ed9af7401a9b"
      unitRef="usd">2896000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzUtNC0xLTEtMzYxOTg_f91c056a-b743-4ed0-85b8-7848c636615e"
      unitRef="usd">1956000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzYtMi0xLTEtMzYxOTg_8003d912-d62a-4aaf-ad71-5c40c7af2f44"
      unitRef="usd">29215000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90YWJsZTo4ZjMxNzk3OWM0ZGU0NzQ4Yjc1YWE0YTE4NjI1NzMyMS90YWJsZXJhbmdlOjhmMzE3OTc5YzRkZTQ3NDhiNzVhYTRhMTg2MjU3MzIxXzYtNC0xLTEtMzYxOTg_b8bf2479-1440-444e-b08c-a926ea09f441"
      unitRef="usd">25992000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzM4NDQ_b615fb7a-9380-494d-a1ed-3b17d374b4f8"
      unitRef="usd">29200000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzM4NTE_5e7ee82b-4b8c-4036-bca4-b48d3a2041d9"
      unitRef="usd">26000000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzEwOTk1MTE2MzIxMTc_ad47d719-1da2-4684-9b1d-3270f0038679"
      unitRef="usd">15300000</us-gaap:UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTUvZnJhZzoyMjRiOGE4OTNiNDc0YzA1YTk2NjM3MjNkOTEwN2I2Yi90ZXh0cmVnaW9uOjIyNGI4YTg5M2I0NzRjMDVhOTY2MzcyM2Q5MTA3YjZiXzM5NjQ_91991360-083e-4866-810c-1e28f55e901b"
      unitRef="usd">0</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued>
    <us-gaap:EarningsPerShareTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90ZXh0cmVnaW9uOjk1MzIwYTQ5YmY4YTRkZWVhZTY4NzQwMzg2ODJiMjljXzg3MQ_9454b802-3e1d-4ba2-9a56-f8e6e8140139">Net Income Per Common Share&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table sets forth the computation of basic and diluted net income per common share for the periods indicated (in thousands, except per share data):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Numerator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net income&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;41,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;238,378&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;33,484&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Denominator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Weighted-average common shares &#x2014; basic&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;65,058&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;63,277&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;59,074&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Effect of dilutive potential common shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,853&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,579&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,924&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Weighted-average common shares &#x2014; diluted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;68,911&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;67,856&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;61,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Basic net income per common share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.63&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3.77&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.57&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Diluted net income per common share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.60&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3.51&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.54&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Potentially dilutive shares excluded, weighted-average&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,758&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,006&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;753&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Unvested restricted stock awards are included in the calculation of basic weighted-average shares because such shares are participating securities; however, the impact was immaterial.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Potentially dilutive shares have been excluded from the computation of diluted net income per common share when their effect is antidilutive. These antidilutive shares were primarily from stock options.&lt;/span&gt;&lt;/div&gt;</us-gaap:EarningsPerShareTextBlock>
    <us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90ZXh0cmVnaW9uOjk1MzIwYTQ5YmY4YTRkZWVhZTY4NzQwMzg2ODJiMjljXzg2Mg_9d07664d-b283-4541-b25f-5785d2d0824d">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table sets forth the computation of basic and diluted net income per common share for the periods indicated (in thousands, except per share data):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Numerator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net income&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;41,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;238,378&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;33,484&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Denominator:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Weighted-average common shares &#x2014; basic&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;65,058&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;63,277&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;59,074&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Effect of dilutive potential common shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,853&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;4,579&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,924&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Weighted-average common shares &#x2014; diluted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;68,911&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;67,856&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;61,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Basic net income per common share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.63&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3.77&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.57&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Diluted net income per common share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.60&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3.51&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;0.54&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Potentially dilutive shares excluded, weighted-average&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,758&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,006&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;753&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock>
    <us-gaap:NetIncomeLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzMtMi0xLTEtMzYxOTg_54959cdc-06ac-413e-afc4-4ee7c5a2ccb6"
      unitRef="usd">41010000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzMtNC0xLTEtMzYxOTg_73a5c360-5842-41ba-bae7-9a72d9693a78"
      unitRef="usd">238378000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzMtNi0xLTEtMzYxOTg_0a246ff7-c089-4a24-9b7d-e9eee9520497"
      unitRef="usd">33484000</us-gaap:NetIncomeLoss>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzUtMi0xLTEtMzYxOTg_c883f4cd-d316-4667-a423-d97948538d41"
      unitRef="shares">65058000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzUtNC0xLTEtMzYxOTg_96eb1476-d398-4248-a651-1c52088df4ca"
      unitRef="shares">63277000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzUtNi0xLTEtMzYxOTg_ce6ac25b-d28a-4bd9-bcbb-78a14c5c30af"
      unitRef="shares">59074000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzYtMi0xLTEtMzYxOTg_0b314580-8e7c-467d-915f-e084aa3ce5b3"
      unitRef="shares">3853000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzYtNC0xLTEtMzYxOTg_0a3fe510-aae8-4a4a-8d66-1bab0519f432"
      unitRef="shares">4579000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzYtNi0xLTEtMzYxOTg_07e5df62-b437-4b5b-b7da-c119cd6ff537"
      unitRef="shares">2924000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzctMi0xLTEtMzYxOTg_eecbd2f6-bb4d-49a2-9685-c6d111b25362"
      unitRef="shares">68911000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzctNC0xLTEtMzYxOTg_e723254e-d815-4edd-a5f7-c3336b62c1d3"
      unitRef="shares">67856000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzctNi0xLTEtMzYxOTg_7d7b0e79-8096-42ff-bc8b-abe55934f938"
      unitRef="shares">61998000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:EarningsPerShareBasic
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzktMi0xLTEtMzYxOTg_6e7391b4-f2a4-4342-afe0-331781f15fd0"
      unitRef="usdPerShare">0.63</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzktNC0xLTEtMzYxOTg_0d567e08-800d-40bb-bf29-19ce9e6b7afb"
      unitRef="usdPerShare">3.77</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzktNi0xLTEtMzYxOTg_352d1867-9b81-401b-a061-cf357f4b5734"
      unitRef="usdPerShare">0.57</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzEwLTItMS0xLTM2MTk4_77eee169-386e-4f75-a559-08e2b0a915d5"
      unitRef="usdPerShare">0.60</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzEwLTQtMS0xLTM2MTk4_5e08e1d1-10a8-43a6-b795-be6b55f5cd23"
      unitRef="usdPerShare">3.51</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzEwLTYtMS0xLTM2MTk4_83bdc70e-7a59-40eb-9fce-65d9885ff0ed"
      unitRef="usdPerShare">0.54</us-gaap:EarningsPerShareDiluted>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzExLTItMS0xLTM2MTk4_7e217187-94dd-4c71-997d-843034ab54fa"
      unitRef="shares">1758000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzExLTQtMS0xLTM2MTk4_f199b3e7-98da-45b6-bbf5-ff9c6f3b85f6"
      unitRef="shares">1006000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMTgvZnJhZzo5NTMyMGE0OWJmOGE0ZGVlYWU2ODc0MDM4NjgyYjI5Yy90YWJsZTo5NWFhYWU5MTliNDc0ZmM5YjU5Yjg0ZDE4Yzk4NmYxNi90YWJsZXJhbmdlOjk1YWFhZTkxOWI0NzRmYzliNTliODRkMThjOTg2ZjE2XzExLTYtMS0xLTM2MTk4_0dafc38e-5b79-4609-93ff-5aba1b247b58"
      unitRef="shares">753000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:SegmentReportingDisclosureTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzMyNTk_e80f5514-ade2-4c4d-9409-abb8e7caeb53">Revenue from Contracts with CustomersThe Company develops, markets and sells a broadband platform and managed services, and there are no segment managers who are held accountable for operations, operating results and plans for levels or components below the Company unit level. Accordingly, the Company is considered to be in a single reporting segment and operating unit structure. The Company&#x2019;s chief operating decision maker is the Company&#x2019;s Chief Executive Officer, who reviews financial information presented on a Company-wide basis, for purposes of allocating resources and evaluating financial performance.&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Geographic Information:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following is a summary of revenue disaggregated by geographic region based upon the location of the customers (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;United States&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;786,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;565,964&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;473,779&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Americas excluding U.S.&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;41,892&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;45,719&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;27,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Europe&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;26,916&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;45,879&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;22,925&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Middle East &amp;amp; Africa&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,885&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19,018&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;14,075&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Asia Pacific&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,332&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,814&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,658&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 7.75pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;867,827&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;679,394&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;541,239&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s property and equipment, net of accumulated depreciation, are located in the following geographical areas (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.610%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.235%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;United States&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,785&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19,900&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;China&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,220&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,840&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;India&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;829&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;43&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 7.75pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,834&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,783&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Contract Asset&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The primary contract asset is revenue recognized on professional services contracts where the services are transferred to the customer over time, which has yet to be billed, and is classified to remaining performance obligations within accounts receivable. Amounts are billed in accordance with the agreed-upon contractual terms. The balance as of December&#160;31, 2022 was $2.3&#160;million of which the Company expects to bill 81% of the balance during 2023. The balance as of December&#160;31, 2021 was $1.7&#160;million of which $0.3&#160;million remained in the Company's Consolidated Balance Sheet at December&#160;31, 2022. The increase in the contract asset was driven by the timing and volume of professional services contracts.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Contract Liability&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred revenue was $58.6&#160;million and $49.5&#160;million as of December&#160;31, 2022 and 2021, respectively. The increase in deferred revenue of $9.1&#160;million is primarily driven by cash payments received or due in advance of satisfying the Company's performance obligations during the year being greater than the $26.8&#160;million of revenue recognized that was included in the deferred revenue balance at the beginning of the year.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Revenue allocated to remaining performance obligations represent contract revenue that has not yet been recognized, which includes deferred revenue and amounts that will be invoiced and recognized as revenue in future periods. This amount was $199.0 million as of December&#160;31, 2022, and the Company expects to recognize 35% of such revenue over the next 12 months and the remainder thereafter.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Contract Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company capitalizes certain sales commissions related primarily to multi-year subscriptions and extended warranty support for which the expected amortization period is greater than one year. As of December&#160;31, 2022 and 2021, the unamortized balance of deferred commissions was $11.2&#160;million and $7.4 million, respectively.&#160;For the year ended December&#160;31, 2022 the amount of amortization was $4.0&#160;million, compared to $1.4 million for the year ended December&#160;31, 2021. There was no impairment loss in relation to the costs capitalized for either period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Concentration of Customer Risk&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;No customer accounted for more than 10% of the Company&#x2019;s revenue for the years ended December&#160;31, 2022 and 2021. Lumen Technologies, Inc. (formerly CenturyLink, Inc.), the Company&#x2019;s only greater-than-10%-of-revenue customer, represented 11% of revenue for the year ended December 31, 2020.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;One customer represented 11% of the Company&#x2019;s accounts receivable as of December&#160;31, 2022. Another customer represented 12% of the Company&#x2019;s accounts receivable as of December&#160;31, 2021.&lt;/span&gt;&lt;/div&gt;</us-gaap:SegmentReportingDisclosureTextBlock>
    <us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzMyNjA_80ceea13-fb9b-48eb-8513-899f344dea95">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following is a summary of revenue disaggregated by geographic region based upon the location of the customers (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.742%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:56.395%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.255%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.612%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.259%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Years Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;United States&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;786,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;565,964&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;473,779&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Americas excluding U.S.&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;41,892&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;45,719&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;27,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Europe&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;26,916&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;45,879&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;22,925&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Middle East &amp;amp; Africa&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;10,885&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19,018&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;14,075&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Asia Pacific&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,332&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,814&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;2,658&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 7.75pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;867,827&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;679,394&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;541,239&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ieae5dffc94804c0fb48da0faaee7d475_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzItMi0xLTEtMzYxOTg_f5b53a63-7315-4262-89ca-2e5ccce3faa2"
      unitRef="usd">786802000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i792b178b52944936bae6b48cfc3fce7f_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzItNC0xLTEtMzYxOTg_534c83e3-b7b6-4f4e-b9ae-ef7b82890efd"
      unitRef="usd">565964000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i728d38d208c644f8bd1d8544c2d48f1e_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzItNi0xLTEtMzYxOTg_4bad86ed-403a-4210-a1db-dcefa75fdafe"
      unitRef="usd">473779000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i33041b28ed9f44f5a1ea4de785d07036_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzMtMi0xLTEtMzYxOTg_33676630-bd77-406d-91df-0dfdc5218a82"
      unitRef="usd">41892000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie84a15f4241d4e8da95b19019b001ec5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzMtNC0xLTEtMzYxOTg_cdadde21-6301-4d3f-bd43-7511de19cebc"
      unitRef="usd">45719000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i79eefe6e67de420ab8fe4564c2d04fa1_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzMtNi0xLTEtMzYxOTg_d0ec65c7-6e78-4198-933f-e2673d256a97"
      unitRef="usd">27802000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i5cc304bf3bd8498298acfd78ba22d90f_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzQtMi0xLTEtMzYxOTg_8839a5f7-a0ca-401c-904d-22d83ff329b0"
      unitRef="usd">26916000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i5ed901e4c55c42e4a419f1770435e0db_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzQtNC0xLTEtMzYxOTg_5fb880d6-d4e1-416d-895c-9ac17809ef79"
      unitRef="usd">45879000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="id595cb86ff10436abaf67dbd61231ec1_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzQtNi0xLTEtMzYxOTg_f966c650-4ba0-4ba3-a49b-78791ee87dbb"
      unitRef="usd">22925000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i8b262bd7fe1a4691a8c6bae2a9787fbd_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzUtMi0xLTEtMzYxOTg_c0bd7c80-a634-4301-9665-f6e70b2f730f"
      unitRef="usd">10885000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i18ab8bb7900d4d298140ed4be06aba85_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzUtNC0xLTEtMzYxOTg_e354575a-ae3b-4efc-a70e-c343d61e485b"
      unitRef="usd">19018000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="iff0d225298e349df93cca1c136c9fe21_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzUtNi0xLTEtMzYxOTg_2fac8335-cb44-403d-b764-b264e379124b"
      unitRef="usd">14075000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="idb8c564de1d14caaabae034fdf7227b4_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzYtMi0xLTEtMzYxOTg_4c6f54a4-9973-4bde-9198-1cfaa6c6868e"
      unitRef="usd">1332000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i43b188fea50c48b0b4b3465f99c1a9a9_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzYtNC0xLTEtMzYxOTg_9bd2be1b-7215-49c1-93f0-f399f65dc7ee"
      unitRef="usd">2814000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i6e6ad924af64444b9fd8b9c73fe1fd0e_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzYtNi0xLTEtMzYxOTg_4583b80b-b2de-45cb-9b1d-784e185954c2"
      unitRef="usd">2658000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzctMi0xLTEtMzYxOTg_3dba2ccc-a869-49c5-aa74-15d72ab3f087"
      unitRef="usd">867827000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzctNC0xLTEtMzYxOTg_bb22b36f-6f84-4c9d-9ccb-fdda9e91632c"
      unitRef="usd">679394000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="idee0869faf144f42866d7aa288175d02_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZToxODJiYjc1Y2NmODA0ZDYyYWI4ZmRlYzI3NDk2ZDVjNy90YWJsZXJhbmdlOjE4MmJiNzVjY2Y4MDRkNjJhYjhmZGVjMjc0OTZkNWM3XzctNi0xLTEtMzYxOTg_9c2f5a56-a510-4ac8-8c78-1271ed7fba5d"
      unitRef="usd">541239000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzMyODA_ea5d1671-b706-4bf8-aa9e-f20e26513d15">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s property and equipment, net of accumulated depreciation, are located in the following geographical areas (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:88.888%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.610%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.235%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.609%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.237%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;United States&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,785&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;19,900&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;China&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;3,220&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;1,840&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;India&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;829&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;43&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 7.75pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;25,834&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;21,783&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="ia7372260ff5944fbbd414f122dbb6a4e_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzItMi0xLTEtMzYxOTg_f72a59ef-ee7e-47ad-a9e0-97b5ccf11dc2"
      unitRef="usd">21785000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="idc76a7bbda2145469e7de41ace18e7dd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzItNC0xLTEtMzYxOTg_c68e9ddb-ce37-43d6-8575-e536aed14a5a"
      unitRef="usd">19900000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i2449b8a5dc374d20bbd43cda851a4aec_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzMtMi0xLTEtMzYxOTg_e3f99f86-0284-402d-ba84-2d3720cf3a34"
      unitRef="usd">3220000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="id634ed9a8216446eb71023487e565cff_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzMtNC0xLTEtMzYxOTg_35a5e99c-1383-4d58-8de4-b1eb4f77321e"
      unitRef="usd">1840000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i4dbf04314295476890b7ee4e02340210_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzQtMi0xLTEtMzYxOTg_5a222335-975e-4c68-adfa-0f937cbecbaa"
      unitRef="usd">829000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i6c55f8ead39246eeb1b8ab7a037df871_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzQtNC0xLTEtMzYxOTg_0f7c0135-8258-411d-8109-893e898eac9e"
      unitRef="usd">43000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzUtMi0xLTEtMzYxOTg_290b8449-305e-443b-9da7-8221af050536"
      unitRef="usd">25834000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90YWJsZTpkOGYwMTFkNWM2M2E0NmVjOGQyZmM1YjY0MGFhNWI3MS90YWJsZXJhbmdlOmQ4ZjAxMWQ1YzYzYTQ2ZWM4ZDJmYzViNjQwYWE1YjcxXzUtNC0xLTEtMzYxOTg_0d540faa-ddce-431a-a6f7-902b582bb4fa"
      unitRef="usd">21783000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:ContractWithCustomerAssetNet
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEyNTI_110b8213-c3e4-4e53-a8ea-adafb85c6167"
      unitRef="usd">2300000</us-gaap:ContractWithCustomerAssetNet>
    <calx:ContractWithCustomerAssetExpectedToBeBilledYearOnePercent
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEyOTI_ac005320-b06a-4ef0-8f23-02fd08cd22c9"
      unitRef="number">0.81</calx:ContractWithCustomerAssetExpectedToBeBilledYearOnePercent>
    <us-gaap:ContractWithCustomerAssetNet
      contextRef="i5647c99c6e924e9681658be971eaeb0b_I20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEzNjM_bcd34159-f56a-4ccb-8116-96f6139dd9c7"
      unitRef="usd">1700000</us-gaap:ContractWithCustomerAssetNet>
    <calx:ContractWithCustomerAssetPriorPeriodNotRecognized
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEzNzU_9f761142-0b95-4424-9642-f58d1e99b75c"
      unitRef="usd">300000</calx:ContractWithCustomerAssetPriorPeriodNotRecognized>
    <us-gaap:ContractWithCustomerLiability
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzQ1MzU_ac3f4c13-3339-4f58-ba33-2d283781f8a6"
      unitRef="usd">58600000</us-gaap:ContractWithCustomerLiability>
    <us-gaap:ContractWithCustomerLiability
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzQ1NTA_afe36b05-f18f-4098-aa8c-ceba435dd4c7"
      unitRef="usd">49500000</us-gaap:ContractWithCustomerLiability>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzQ1NjU_502b1d4e-0606-4bd0-8d42-56d349135340"
      unitRef="usd">9100000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <us-gaap:ContractWithCustomerLiabilityRevenueRecognized
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzQ1Nzk_87fca2e9-5414-4200-87f2-189e98dce71a"
      unitRef="usd">26800000</us-gaap:ContractWithCustomerLiabilityRevenueRecognized>
    <us-gaap:RevenueRemainingPerformanceObligation
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzIyMjE_7827a291-80f3-45fe-ba74-b19f4c5484cb"
      unitRef="usd">199000000</us-gaap:RevenueRemainingPerformanceObligation>
    <us-gaap:RevenueRemainingPerformanceObligationPercentage
      contextRef="i2bf837c4cb024b00b0c258f20aeaad31_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzIyNzE_3079d364-c530-4db6-a071-953d03bf1121"
      unitRef="number">0.35</us-gaap:RevenueRemainingPerformanceObligationPercentage>
    <us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
      contextRef="i2bf837c4cb024b00b0c258f20aeaad31_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzMyMjE_8911e7d7-725e-4452-8f3e-781e2e400d80">P12M</us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1>
    <us-gaap:CapitalizedContractCostGross
      contextRef="i18ca6c2cd59045dcb331174af35d6d74_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzMxODU_3f6c6f68-60cb-4356-a002-67bf27c31fad"
      unitRef="usd">11200000</us-gaap:CapitalizedContractCostGross>
    <us-gaap:CapitalizedContractCostGross
      contextRef="i3cfa8e15f5fa4b728b7bf0524780329d_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzI2MzE_de35489f-bc4a-4ee8-8ff2-668aa69a32bd"
      unitRef="usd">7400000</us-gaap:CapitalizedContractCostGross>
    <us-gaap:CapitalizedContractCostAmortization
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzMyMDA_7867e02f-8089-454f-8871-39b108b70494"
      unitRef="usd">4000000</us-gaap:CapitalizedContractCostAmortization>
    <us-gaap:CapitalizedContractCostAmortization
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzI3MDM_cd308047-2cb2-452d-9f28-d01e5f3d6403"
      unitRef="usd">1400000</us-gaap:CapitalizedContractCostAmortization>
    <us-gaap:CapitalizedContractCostImpairmentLoss
      contextRef="i8657fbe66ec14adebf1e702d86108eaa_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzE2NDkyNjc0NDQ5NTA_0af5d7d8-68b6-4f0e-9e86-6280ec15eec6"
      unitRef="usd">0</us-gaap:CapitalizedContractCostImpairmentLoss>
    <us-gaap:CapitalizedContractCostImpairmentLoss
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzE2NDkyNjc0NDQ5NTA_b25a1df9-ea72-489b-a0eb-13220d6f0dfc"
      unitRef="usd">0</us-gaap:CapitalizedContractCostImpairmentLoss>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i04be09c8797d413a93af8d5d08358be6_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzMwMjc_44a01804-92b3-4ffb-8694-4d1d60747158"
      unitRef="number">0.11</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i7932d93f74d241a2b2e0cfcec811a2f5_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzMxMjY_ed45b01e-a030-4a06-90d8-ef67eebc1861"
      unitRef="number">0.11</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="ida3b3cbaef8142a188dbc53f1b97daac_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xMjEvZnJhZzoxZjU3MmJiMjgxZGE0YmUzYWQ2NThmNTVmZTcxYjk1OS90ZXh0cmVnaW9uOjFmNTcyYmIyODFkYTRiZTNhZDY1OGY1NWZlNzFiOTU5XzEwOTk1MTE2MzMyMTQ_cec02ff2-5685-43a7-bc3f-b9f5aa296fae"
      unitRef="number">0.12</us-gaap:ConcentrationRiskPercentage1>
    <dei:AuditorFirmId
      contextRef="i3e65b62e096845678e29e95530315bfa_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFkZGE5NThlYjY2ZjRhYjM4YWE4NGM5MTczMDRlY2UzL3NlYzoxZGRhOTU4ZWI2NmY0YWIzOGFhODRjOTE3MzA0ZWNlM18xNTQvZnJhZzoxNjU4M2MxZGFiNDM0ZTNjYTEwNGY3MDU4N2M0NDNlZS90ZXh0cmVnaW9uOjE2NTgzYzFkYWI0MzRlM2NhMTA0ZjcwNTg3YzQ0M2VlXzE0OQ_dc724943-2728-44f7-a688-2e03a55fbd87">185</dei:AuditorFirmId>
</xbrl>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EXCEL
<SEQUENCE>86
<FILENAME>Financial_Report.xlsx
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 Financial_Report.xlsx
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
M=WL/LA[G5G[XIE7\&Y$I)D$A74"I==Z%A<XWW=>;)X*MLW[D.1."1=G#%27
M7QX [R\8$[LG\@/V/?#]_P!02P,$%     @ )8!55F6)&1\U @  LP4  !@
M  !X;"]W;W)K<VAE971S+W-H965T,BYX;6R-E-N.TS 0AE_%,A)7J^;0 TM)
M(O7 PHH655L!%X@+-YDVUOH0;'>SO#VVDX8BM5%O$A_F__V-DYFDENI9EP &
MO7(F=(I+8ZII$.B\!$[T0%8@[,Y>*DZ,G:I#H"L%I/ BSH(X#"<!)U3@+/%K
M&Y4E\F@8%;!12!\Y)^K/')BL4QSAT\(3/93&+0194I$#;,%\JS;*SH+.I: <
MA*92( 7[%,^BZ7SBXGW =PJU/ALCE\E.RF<W>2Q2'#H@8) ;YT#LZP46P)@S
MLAB_6T_<'>F$Y^.3^X//W>:R(QH6DOV@A2E3?(]1 7MR9.9)UI^AS6?L_'+)
MM'^BNHF-WV.4'[61O!5; DY%\R:O[3V<"T97!'$KB#UW<Y"G7!)#LD3)&BD7
M;=W<P*?JU1:."O=1MD;976IU)IL="VK0HV@^K[VG)##6UFT&>6LQ;RSB*Q91
MC-92F%*CCZ* XG^#P/)T4/$):A[W.BXA'Z!A=(?B,(Y[_(9=DD/O-[PU2?1S
MMM-&V5_BUZ5\&[?193=7)E-=D1Q2;.M @WH!G+U]$TW"#SVLHXYUU.?>L$J%
MOA(.E]CZU5\VZT]HM=KT@(P[D/%-("N97_TQ^AVV1!B"%HPH<H<6A%%[_X*2
M'K9)QS:YB>V!*HX>EY?0^@VB^_$EC."LD#BH@V\7&N7R*$Q34]UJUY%F32'^
M"V_:V9JH Q4:,=A;:3AX9^]*-2VBF1A9^;+<26.+W ]+VU5!N0"[OY?2G";N
M@*Y/9W\!4$L#!!0    ( "6 559#0 ,#1P8  "8:   8    >&PO=V]R:W-H
M965T<R]S:&5E=#,N>&ULK9EM;]LV$,>_"N$&70O$,1_TF#@&V@3;"JQKT+3;
M:T:B8R&2Z)*4D^S3CY0=R18I)NO2%XUD'T__.XKW.]+S>R[NY(HQ!1ZJLI;G
MDY52Z]/93&8K5E%YPM>LUM\LN:BHTK?B=B;7@M&\'525,PQA-*MH44\6\_:S
M*[&8\T:51<VN!)!-55'Q^)&5_/Y\@B9/'WPM;E?*?#!;S-?TEETS]7U])?3=
MK/.2%Q6K9<%K(-CR?/(!G5X0; :T%G\5[%[N70,3R@WG=^;F4WX^@481*UFF
MC NJ_VS8!2M+XTGK^+%S.NF>:0;N7S]Y_[4-7@=S0R6[X.7?1:Y6YY-D G*V
MI$VIOO+[W]DNH-#XRW@IV__!_<X63D#62,6KW6"MH"KJ[5_ZL$O$W@ 4C S
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
MDL;V/F,%P4B,G<%Q821-)D07'N4*OJQ7WK33 !FZ&H-H(4AMABXLBI/,80C
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
M#X;Z8\QAM$4^:+U%.MRTQHXDP&@-HHC,(2(8D\EGE6*?]TGHI:W-*/J7N,9
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
M>-MJ]21K%P6:2 T+CA_,?X<$YAV.JNU$PVVG18B#&+._2;!B9J6T14B[Y3R
M2^_^0*@A\.JM.-=""^_+J7VM8".X1A0-E3"(Z$+$R+25_^$>*96QWO4+4>?P
M.#(_3J;WB)/]3C,'^^QRY^[:N?M#*V/@OL'KOO*C7["/\)\=A>^>P@D1O@=*
MXY!2M_W.4,E9<>['6)C%Y%"36'26,CC+Z+EKTX+^/V'F*+8S%L?GSRH]I<\(
MY7Z&2[&%(GQ#HQ3IGGNMGE*ITR(ZS$@?7EKX\!BA89'1_:0M\6W4GX-5GSY?
MA48A-;ELY$*6W,5VM&1T<.RR&.Y=^)C$I7_6N ,5=T%_]^]&=R^GR_[!\+*\
M?W;AV;)T]"JQ0%,RR)( =/^4Z3M6M?[Y,%,6'R.^N<+7G]!N <XOE++/'>=@
M]YZ<_@102P,$%     @ )8!55K*>F])6!0  N0T  !D   !X;"]W;W)K<VAE
M971S+W-H965T,3 N>&ULE5?;CMLV$/T5P@F"!%!L2_)U;\#NID$+=-$@MSX4
M?:"EL<6&(K4DM8[S]9TA)5F;M9WDP;)$SAR>.<,941=;;;[8 L"QKZ54]G)0
M.%>=C48V*Z#D=J@K4#BSUJ;D#A_-9F0K SSW3J4<)>/Q;%1RH097%W[LG;FZ
MT+630L$[PVQ=EMSL;D#J[>4@'K0#[\6F<#0PNKJH^ 8^@/M4O3/X-.I0<E&"
MLD(K9F!].;B.SVXF9.\-/@O8VMX]HTA66G^AAS_RR\&8"(&$S!$"Q[\'N 4I
M"0AIW#>8@VY)<NS?M^AO?>P8RXI;N-7R;Y&[XG*P&+ <UKR6[KW>_@Y-/%/"
MR[2T_LJVP3:=#%A66Z?+QAD9E$*%?_ZUT:'GL!@?<4@:A\3S#@MYEF^XXU<7
M1F^9(6M$HQL?JO=&<D)14CXX@[,"_=S56RX,^\QE#>P.N*T-H.+.7HP<@I/)
M*&N ;@)0<@0H3MB=5JZP[#>50_X88(2L.FI)2^TF.8GX!K(A2^.()>,D.8&7
M=J&F'B_]<:AOA,VDIF@M^^=Z99W!W?'OH: #Y.0P)%7,F:UX!I<#+ D+Y@$&
M5R^>Q;/Q^0G"DX[PY!3ZK^3F)-!AFD?0V<<"V*TN*ZYVK P3E@F<R+@M&-S7
MXH%+;\E5CEO1? ''5Q*8A:PVP@DTYXZM"?[!PU/Q80'CK!%J0T4D[)"]W1L(
MPF+P53A6&9%!A-:>J'+DX) 1+W6M'-XB]%;7,F<K($S FLZ9T[BZE(3"K<56
MI@VKN/ 3F%MEUV"0@Q1\):1P.R84V6J3@Y&[8,)#FUB!VP*H)C!$,4YD M7
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
ME;(HJ.XOF4EHFH#O:Z5L_T(+#%?05_\#4$L#!!0    ( "6 5580[3G'V0H
M 'D=   9    >&PO=V]R:W-H965T<R]S:&5E=#$R+GAM;+U9;6_;.!+^*X0W
MM]<"KN.WO+1- B3I%=O%=C=HNK<X'.X#+=$V=RE1)24[_O?WS)"2);^D: ^X
M+XDED<-Y>>:9&>EJ;=U??JE4*9XRD_OKWK(LBS>GISY9JDSZ@2U4CB=SZS)9
MXM(M3GWAE$QY4V9.Q\/A^6DF==Z[N>)[#^[FRE:ET;EZ<,)762;=YDX9N[[N
MC7KUC4]ZL2SIQNG-52$7ZE&5OQ</#E>GC9149RKWVN;"J?EU[W;TYFY*ZWG!
M/[5:^]9O09;,K/V++CZDU[TA*:2,2DJ2(/%OI>Z5,20(:GR),GO-D;2Q_;N6
M_IYMARTSZ=6]-7_HM%Q>]RY[(E5S69GRDUW_I*(]9R0OL<;S7[$.:\_&/9%4
MOK19W P-,IV'__(I^J&UX7)X9,,X;ABSWN$@UO*=+.7-E;-KX6@UI-$/-I5W
M0SF=4U >2X>G&OO*FWN;9;J$ETLO9)Z*>YN7.E^H/-'*7YV6.((6GB91W%T0
M-SXB;C06'R%AZ<4_\E2E70&GT*U1<%PK>#=^5N([E0S$9-07X^%X_(R\26/P
MA.5-OL=@\4[[Q%A?.27^?3OSI0-J_G/(#>&0Z>%#*)/>^$(FZKJ'5/'*K53O
MYL<?1N?#M\^8,&U,F#XG_=MC]C^($[\H8%ZTUWQ>\G4A\XTP]-0+.Y_K1 DV
M652(O!.YS5\E,D^4D3.C!%C$21(;MPS$O7(E2 -[1;F5^.,/E^/1Q5N_MT$D
M4(O6.Y6KM3180&D=5,:]$@F.PW@3LCTQLN)CWE<E11.IH[,J$X7<!"N"EG3R
M5S2E@[WVI4IK5>?6@,MHA233!2"JLAFDU3 5+Z!GN;25AW+^Y1OQ+R4=903M
MZ:R.VGV,V@5G/]0Z0M9$G(AI_WS\FBZF^#D]NZ2?9V+2?WUV1C_/V050#*0\
M+R'X;#(2GVT)'\V[QK-!6Q>,)OVSBPD.]5[HK*C(1)U#@O*E>#'JCR['+W'\
M:-R?O!Z)V\.V]MDE.TX31LN9-KK</.>]72_=)HFKL+#>3/![!1)T'-[".HXL
MQ.R%Z(2\,7TM?MM]<-F?3L=;&PY 5\,12U2S+Y5T,'T'R]#P4>;B9^M57]Q+
MHU$&<RTC>F2T5BZ<4N13F"-+H9X*[4ATOG47A6S YS\?DRTLHV@L/;D83+#>
M&"YCB#7=U'EBJI0CQLM+!B_4XZL- 4X1!1] IYS9E0K*\,^P%YEDO*WE?D7-
M^ISHS+\W;IO+I X=%'M00&&5R;;OWHH'L\G0'RS[A/M<>4#UK?BDDZ5TJ;=Y
M7WQ63]*_%7<R7TAC'5S_ ;F#1;_*_$]$%^*6.L<U.>,/0NO/UJ42.W\O)<2N
MEQ 6PR 0D)5T&C 3J2RA5[ETMEHLR1<7 T@6O\('=9!&_;9=<"&E Z>%1;A]
M-0N.(/ME&Y*TJ4;*,WAB?*Q!&R@+*]+);! #F&%SE8:0-&<DX%R0< CQ;;5
M,Q#B%PZ'\(Q.GKP6&9?<00?>#F%'OY.*DV$+/9#4R$>D;<80)ZG'F?+_R'^/
MM6Y="KPX&P;ZNP!=,?F=GQ^AN,:Z1OT3,0:33=DY:V[28(E<@2@62J2H][9"
MXH(VU"ZJC]>B8W939,\'H[\-#I_F%+7)6Y;D$#XG:S(8<BI3'6MEMC^6VOQW
MQ&F!'T-@F7W$_(ET0"^M=NHM'W,R'9S7$.G3U:A#-[@QW#X&LQ6*>VFS0167
M?@E?ZQ1]:[FD<M[X*J%'<R ET,6>$^/)9ZV3)X/7W9,G@\OF!@GY-NN[JCY4
M#A1SO)EIPGW_,705O[W#C\)0WH)>*)=)A23V+4B> ED+S^I\A7_6;2B79+JB
M7H)'A5146'(04K-*FY3D*;BI9++D,Q QJ)U6D)#)O *= M[1:2CRF(>";@@E
MP5ZF"D13JI8VOBH*,I<L:^YZKAD5J33;!(7:1N+0H! ]*9S%^:Q3M\3LZ-SE
M&_2+B*\!GZ46.N86Q5#^!<^M<=\O=5$#KZ734AG6IZU+5RI['T&H0Q?C0%CC
MRMVQHNW#>67FP TO8GJ$8G/D'B:EM+:P%3@'-Z)8,":Z&L )%4Z4K99FO53Y
MO@]!DTCSLFMCZP@N('LJ<.L&/_E]1S5K%]:F?BN):Q8M4'2#5X-'4 _K6D3S
MAB:WL9OD#I *U"6<U*US2[EU<MIGK3*Y$3-5>R8E_9LP1$ $[NTW*1$5W])<
M*]9;1]11#QY$R,A_1(-KS.;TGQ1"?^!+&2I&##I.]Y6D)LM&)^<\GU5@.+AS
MI3W/ VRTK]  -,('QYK7FBM&N]X 9Q>0^:0Q]X,\0$33X98C S>-IZV^K$LV
M?>Y26R8TGDM:W$-L4KN%&B;*0I0D92##A4PE^')":WB@'S.2!!Y/&0KEW-F,
MR8)]A?\AI"B.?T)%NKEE,2C(@Q19H+,9G(RCZ\?-V8'Z#L"ZMLS7::$[L88R
M,Z5X:DO9*/64T+Q!!6'FK5$E="/9:/FR AUL6K'27<P&QEM@<%5\C1,QH-;
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
M2J.B 7B_+LO&?:$%_/]IX?7_ E!+ P04    "  E@%56<&6NZ2T#  #Q!@
M&0   'AL+W=O<FMS:&5E=',O<VAE970Q-"YX;6R=5=MNVS ,_17"*X8-2&W'
MR2[HD@!-NV%[&!"TNSP,>U!L)A:JBR?13?/WHV3'38&V&/:2B!)Y>$B)Q[.=
M=3>^1B2XT\KX>5(3-6=9YLL:M?"I;=#PR<8Z+8A-M\U\XU!4,4BKK,CSMYD6
MTB2+6=Q;N<7,MJ2DP94#WVHMW'Z)RN[FR3@Y;%S);4UA(UO,&K'%:Z3OS<JQ
ME0THE=1HO+0&'&[FR?GX;#D-_M'AA\2=/UI#J&1M[4TPOE3S) ^$4&%) 4'P
MWRU>H%(!B&G\Z3&3(64(/%X?T#_%VKF6M?!X8=5/65$]3]XG4.%&M(JN[.XS
M]O6\"7BE53[^PJ[SG7#&LO5D=1_,MI:F^Q=W?1^. M[G3P04?4 1>7>)(LM+
M06(Q<W8'+G@S6EC$4F,TDY,F7,HU.3Z5'$>+C[I1=H\(2S2XD00K)<PL(X8.
M#EG9PRP[F.()F'$!7ZVAVL-'4V'U$"!C3@.QXD!L63R+>(EE"I/Q"(J\*)[!
MFPR%3B+>Y F\*R3ID)\3'4KU\.M\[<GQP_C]6,4=WO1QO# L9[X1)<X3G@:/
M[A:3Q<L7X[?YAV?83@>VT^?0__U:_@/F6XUP874CS!Y\8XVWSH. :3Y^=?,:
M2-R=\JM&Y[ "+VZEV7IH. Q8 4 H!=B#>MC5%G10CA(=L0  *KF5:ZDD[7EB
M_[1]QWT**^%(EI*3<M^UV$/)S\7)=4LX@C"=P%T\Y>1AQJ0?A0UT)0>S-(#=
M -4H.;\QK5 <K%F5O B#/0(& 6,)R +>E<B\11@1J5M]GR9*@+8MWW_3.M\R
MD1!PW:E#=W%]"[IL\,40.L/9KO 631N:5F$*1^UCEA1=*^E+AS%''[RTPE7!
MN.0>E,0M'L6RM;A!$%4E@S-CLZZ4-??X 5$?.K+&6JC- :\YZM\##HQ0X5,P
M9$FHL'TR3<<L'TK%AIU,TN)@<4LK."G2=\,&WV.8N3AYXWC,BWS$%^H;C"*J
M]NEC;SP[DB&-;AO%UC,E;GJG2,/NH.?GG8S=NW<?@Z_";247H'##H7GZ[DT"
MKA/8SB#;1%%;6V*)C,N:OTGH@@.?;ZRE@Q$2#%^YQ5]02P,$%     @ )8!5
M5A_2OGDV!   #PH  !D   !X;"]W;W)K<VAE971S+W-H965T,34N>&ULI59M
M<]LV#/XK.'77)7=N]&(G;A/;=T[:;KU;K[FDW3[L]H&6((L+1;HD9<?[]0,H
M67&N3K9N7R10 AX\  &0DXVQ=ZY"]'!?*^VF4>7]ZCR.75YA+=R)6:&F/Z6Q
MM?"TM,O8K2R*(AC5*LZ2Y"RNA=31;!*^7=O9Q#1>28W7%EQ3U\)N+U&9S31*
MH]V'&[FL/'^(9Y.56.(M^B^K:TNKN$<I9(W:2:/!8CF-YNGYY8CU@\*O$C=N
M3P:.9&','2\^%-,H84*H,/>,(.BUQBM4BH&(QM<.,^I=LN&^O$-_'V*G6!;"
MX951O\G"5]/H=00%EJ)1_L9L?L8NGE/&RXURX0F;5G<XCB!OG#=U9TP,:JG;
MM[CO\K!G\#IYPB#K#++ NW446+X57LPFUFS LC:AL1!"#=9$3FK>E%MOZ:\D
M.S^;YWE3-TIX+."3K]#"E:EI>RO.^QKA%^/<)/;DB?7CO$.];%&S)U#3##X:
M[2L'[W2!Q6. F"CV/+,=S\OL6<2WF)_ ,!U EF39,WC#/NYAP!L^@??N:R/]
M%GZ?+YRW5!I_' JRA1@=AN!V.7<KD>,THH0YM&N,9B]?I&?)Q3,$1SW!T7/H
M_WEC_C\J?*X0O%@HA 4W;=>P\B]T0":05T(O29;<4P]P)L#EC^ 4PRVVX:O1
MJ/TY?-$T.Q2!%? 3S0P'0A?!+2%2E\[70BKV_8H&SJM;020^"GN'+9];S!LK
MO21=ZDGJ. U7C;6H\RU\MD([HL*]/B_^I-:AV>$I&N.%@DNAA,X1!'DI@:H)
MZP71[2HJ@1_@Y8O769I=D'24ODF/^_>G W%)36N$(X[OF/3&;X[A-"$A(^%Y
M5VFG?I2."/QHF"6'7834':6#TXS5SH89/;-!>CK\)P=98#X8)TF(83P>AG<V
M&+$TIT3[-NE*BH54;38)A[>6BT'H;4C%^,+!IC)*;<%L-&U7V67<-0LG"TD5
M08;"4JUTF6<=:VI&DI8FMEMAF+E0-CK,8-J'O-VN8.H![]MB DO6H:*P+,F(
M_S&?11=I>SX5I#0(U"VN43<89+RG \I]2Z6#J'D.40QBC99.F=ZE:WV><+6[
M!T-BZ9@Z#76F4TCBPX1)/Q=*[:4AWQ7>GBF(A\([@9M=H1\V$>VYM Q=8&S8
M<7*S(7^@C0=')K*4N= 4.I6]7H: MBBL ^2Y^NW>=R7&>0EES0+GQ6)N+%M0
M3+R[67+1%MVNDKLL'@] HP\:Z04K[U7%CXXD[8R214CPK:=7VV-4/H_GR(<
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
MK6D-\1NZ=#3@]K!H#3(:,A5&^MP9"?79-0\*J8D'EQ'LVWH@<^5HJ6JUXF;
M[,G)S;5QJ!^]..J6#Y.&Q]X!@X,AY;XW%%N(1&[4AM[N([8<T)TR^]=VED<!
MD@ZF+@]=,C3%Y\7_$V_]^D%*TERP+MSX 6EW(,5(%R;>8D&OQ,((X^-,?%)Y
MZSXN$+X.4#6V,/HZ/&8>%PL_X>DS#C%=]O7"?#=]@+DXI-=U<?J]U'T#R/2A
M-U_,B!ZC_TA95>=C-3%]!\E>WS/] V/A>8=-C<1YIW2]TG&?,#O7)Z",!<DT
MVK=6*X10@?!XU"UE.HZYD\!X_O*1"O9>+D8;(I#?\:!,/(L8W8P"YC"!C"+@
M3!D]#,R5@^^0$$W?G7]&JNMCPV6POFZX;N4WS#$&(Q][%4W#!GG'0[CD7=LP
MXO%W8#77E3N8CMHQWD/?]T?E!R!'3B0=Z+N>:_+:Y6]L1,T3&4YP ^3.=>'4
M8@"!),V:QJ^:8ICZPS5&/3)-[DH?&V,H- <]U?34AY&KT4>K2C5K_C1'K_&1
MX=WWJV%U^/IWXSYZ[;>[3X<_RP;!:D2I5B!%$Y1,1.,^Q[D;J[?\"0Q#L=45
M7VZ41+6A#7B^TMKV-W3 \$WT^G]02P,$%     @ )8!55J^V(+;/ P  P@@
M !D   !X;"]W;W)K<VAE971S+W-H965T,3<N>&ULG5;;;MM&$/V5 1,$+<"*
M5U$72P(LVT'S$$.(FP9%T8<5.1(7)G?9W:7I_'UGEY2LN+;@]H7<VYPY9W:&
MPT4GU;TN$0T\UI702Z\TIID'@<Y+K)D>R08%[>RDJIFAJ=H'NE'("F=45T$<
MAEE0,RZ\U<*M;=1J(5M3<8$;!;JM:Z:^K[&2W=*+O,/"%[XOC5T(5HN&[?$.
MS==FHV@6'%$*7J/07 I0N%MZE]%\G=KS[L#O'#M],@:K9"OEO9U\*I9>: EA
MA;FQ"(Q>#WB%566!B,;? Z9W=&D-3\<'](]..VG9,HU7LOK&"U,NO:D'!>Y8
M6YDOLOL5!SUCBY?+2KLG=/W9)/0@;[61]6!,#&HN^C=['.)P8C!]S2 >#&+'
MNW?D6%XSPU8+)3M0]C2AV8&3ZJR)'!?V4NZ,HEU.=F9U2_?^2>2R1MB@@BM9
MUQ2KNY(I7 2&'-AC03Z K7NP^!6P*(;/4IA2PXTHL/@1("!F1WKQ@=XZ/HMX
MC?D(DLB'.(SC,WC)46[B\))7\&Z8$ESLM1/K5,*?EUMM%&7'7R\)[N'2E^%L
MQ<QUPW)<>E02&M4#>JL/[Z(LO#A#-CV23<^A_]>[^=]@\%N)L),5%2C%!@S;
M5@@:C:9%94HPM$V&36N8JR2YLX7 <V"B@()7K<$"!.'S'K\A_+S'UPZ?8!P(
M;7!9:#I7\)Q9JY^XH!W9:H+2/N!CCHUQ +UE03G]\QS^0*:&I )*":RW=.*0
M%O81V4<(MVV-BAFIYG#[Q.<]I)$?1B$-XF3J)Y,IC9+$3Z<IH0E)9=7;?',U
MC,4O[(%@]OB#"@T?WDWC*+X8Q&=C/QQ/(4O\>#*!\<P/)RG<[';TN;$1<G&A
M#PXTTJ PG%7/T!)_.DX@]<>3&<3^+$[?ZOX0\6SJSZ((L@D!99!%_FPVA;7C
M=NXRWD,XRA(;@1'QMK/Q!*[?<(O.,'2&XZ@W3&%S4%=]?Y(\$*;;K%JZ,A^Z
MY\HB?T*QHUL),YA0&+Z*!]26 -D9Q7,[I&]??@^L8XI2QA(@8@X/7-)0>%B5
MM]6SG/R7JX',%G/6:IJV>7E8LZ -4X;GO"$8RGV->:NXX:@OH)0=$H;O?/&:
MRMQ QRA[J7T9RF16C<[*+XD!N45Q# 3LE*Q?*J>W%%%7HI/-%6"?99P4D/.#
MWY&M8U)XNG;@TJ&5JC@U7DY4'8\^OK*Q)/3HI>]5<-)7J+#VKGMJHM4*T[>8
MX^JQ05_V?>GI>-_=/S.UYT)#A3LR#4>3L0>J[YC]Q,C&=:FM--3SW+"DGPQ4
M]@#M[R2%>IA8!\??EM4_4$L#!!0    ( "6 55;O*LP") @  #04   9
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
M=!(OYR-FPC>J<.-T[;\+;;1#C/YR)S@TCR9@O-#:=3?DH/]0>/U?4$L#!!0
M   ( "6 559B^$5=PAH  -A6   9    >&PO=V]R:W-H965T<R]S:&5E=#$Y
M+GAM;+U<>9/;1G;_*JC9U$:NXE SXT,^)%7-C"2ODMB>:-9VI5+YHPDTR5X!
M: C=&(K[Z?.N/D "U&$G55OK$0ETOW[G[QW-ISO;OW5;K7WQOJE;]^QLZWWW
M_>/'KMSJ1KFE[70+WZQMWR@/_^PWCUW7:U712TW]^.KBXIO'C3+MV?.G]-E=
M__RI'7QM6GW7%VYH&M7O;W1M=\_.+L_"!V_,9NOQ@\?/GW9JH^^U_[6[Z^%?
MC^,JE6ETZXQMBUZOGYU=7WY_<_D=OD!/_&;TSF5_%WB4E;5O\1^OJV=G%TB1
MKG7I<0D%_WG0M[JN<26@XYTL>A;WQ!?SO\/JK^CP<)B5<OK6UK^;RF^?G7U[
M5E1ZK8;:O[&[OVDYT->X7FEK1_]?[.39B[.B')RWC;P,%#2FY?^J]\*(CWGA
M2EZX(KIY(Z+RA?+J^=/>[HH>GX;5\ \Z*KT-Q)D6I7+O>_C6P'O^^0OMRMYT
MQ"&[+FX&!P\X5ZBV*N[-IC5K4ZK6%]=E:8?6FW93W-G:E$:[XE'XZXNGCSW0
M@BL^+F7?&][W:F;?RZOB)]OZK2M>MI6NQ@L\AD/$DUR%D]Q<G5SQA2Z7Q9>7
MB^+JXNKJQ'I?1LY\2>M].;/>U(G_^WKE? ^:]#]3)^;UOII>#\WK>]>I4C\[
M _MQNG_09\__^I?+;RY^.$'M5Y':KTZM_OQ&.>-0@G>X=NL5ZSQ(,3O'CX.I
M5%OJ*>+_Q.6+OV\UF%MIFTZU>_RFM*T#'E;*ZZI8FQ:>,JHN'*RCP<2]*[;J
M01<KK=L"F-.I'IXS+2W2\YH[X[>%AX5[_6XPO;P&%.%GOR[OE\6]+H?>>)03
M$O;R?;E5[487M[9IC",W\NBO?_GVZNKBA_N7M_37Y0]?T+/T_D:WNE=UO<=M
M=8>DJG2XKC= =%>CWLLJ/UY?WX5EEL5U#0?*+,:T7O?" W <-9Z"*0,-:ITB
MKY0?7-<&#)Q8!$=/+(/'8'58!/R5[C4R [Z'8SM=M-;#HMX6JNM 1]6JUCG1
MFR 1$%ZCD2IXE);!/Y!S:O!;"UQ3Z!R9#WBL0KEB#:M4LE7Q*@HM$_B]A^.H
MOG+%C87_1,:\NKZ_B?R=?/[65L0GGTOE^CY*97G")+Z.)O'U29W]%?@#^O'2
M>0/>6[LIK?^T%4BQ63]5\)B3V@SL9A%BV#1^S]H;N;LH=EM3;H,J@VQ4"R$0
MWT6Y-.JM+G3<%%5&.0B;'6N,WRI?J/4:XAJ+L$'^.EBML[UH#W[^8:.CE7,[
M)75:%A#O:(5;_F8ARI9( E.HATHOBM4 I/2DAP6J+V[E[?<%F)'=L<8#"XK*
M#BN_'NJ@F[RU4VA-O?9#W[I%H=^7(?+8%5"N/2KZ U!J>Z#A8$F[JLU&"4=L
M86!-.# Y9V3GL(8_AE[WL/"#JH<H+XBHY=MS#.15@2<'@$'?+8K!:22Q!D-P
MR'"P93I-4=MV<XX?DQRTAR6=:#)1J]][C4&LV*D>3!O$75J'3P%,JLT_U<K4
MJ .P>86FA[[-J_>R%JTPP+%ZKU!P\$5GG>&#X7=X*I -V+U!V5S#L4"*H#6
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
MA7[$KEA^G#QL,#3-TT=_WJ%/A:ILE/7R=&D#? >XX#?&O271OH[)^?V XW'
M%XA!I<:TF$#09"3[D_?()N=,"Z!]:%)+-?*_WB>OFFDW^(I<:\OQPE@.8&IZ
MI$8*-^.Z#98 %UP(1.<* 8_;5HR7R4#=>&PR3FAQK9"]VNW! G$SK*A -KP/
M 'P-<#TOB!_N( W/!B$OH14_@N$1^\/?D")I>((*@J U-2D4*R>7@1%$$6KC
M7L9ZQ&?L*!.7I'C[:TOI_KUGVWZA:9K)%1+3>#491=4X&;47BYM9%LQN0=0;
M"C%8&\(:F*XD;X.'"8M3G>$ =R#LQ-(@8KG>X#Q616%,7"^V/ZC1*)(8OTPU
M'ER!VC/OR9AAOW^Y6CXI&D"CH5"$$@LG,5S#T*!+U!(QE:$&,&[U&DQ0+8K;
M+9PS@@+AUK^#Y5:V618_I?G$%<1>_:!=0L8S'*+O(6^HIL$ TD?C;8>JA<*-
M2Z)AT!@J->-Y'!A'!(#YU.M&)Y+9  _FL)9)#3\%W-DMQPRN-"#L:E3_I'P;
M]JH1\*RX6!R0SG0Y+Z9_MS^Y47W#0E9K,/A5&DU[YJU?7F2OK64:<S74;W%G
MDN9,/7:NJQL,RX5\@0M;P7:2W?45TD$,Q">=.#7@T>];4X^[$D[KMXX'5@TG
MK,"F8;W&67G0%'IW'R@.>RY.AHSYV<(TL2A!".>T*0QITG&LB-@.;Y)0<P/0
M%AJA>#&,0&138RKHR\Z'=A,U? B\$P1$W(CX@EKGL;(P6J88#\K&XX"$!7T
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
M#IV_=_@J<&].QN R62GUZHS?UO,@=H2PQ-PZ!$[=#N^P+!T0T?B[PPR.6[K
MTW&/_LGG3KFLN,$[5?XAUK:8!Y, UKCA36F?U/XS=OED#B]7I?$M[%O?X3B
MO#%655TP,:B$;'O^K=/A)& 2OQ' N@#F>;<;>9;WW/+%3*L]:.=-:&[@4_71
M1$Y(]U&>K:9507%V\8D+#5]YV2 \(#>-1E+<&OCPPE<EFH^SR-(NSC?*.\1E
MB\C>0$P8/"AI"P._RC6N?P2(B-Z1(^LY+ME%Q'O,!Y F(;"8L0MXZ3'GU..E
M/\_Y7IB\5"YM W_>KHS5=$S^.I=T"SD\#^E*Y]K4/,=Y0+5A4.\P6+Q_EXSB
MFPN$AT?"PTOH)X1#N#4&Z?MT'VL-=+*?,&^T%G(+2VZ$.<?^(OYY]B\%PD:5
M5+4.V?KC 'YON@IL 9;6[U15<WEX_V["DO$-K0C)92YX";RE6?4TN86-RV+G
M97?E2"7=TUXYVKZX?#X.V18:\1<K4)_&%61SG1<'^""<GVH,EVOS\9ID ;4!
M.BE8K2BF/RWP.^ZPA*3K&;PH2^SH@.*!RDB_TK6W:0@"KB#+,FI]+NRFL[\,
MG@>P53O4TM4%Y4^<!=$RD"0L' _C8T!ODR85:B]"S6OBTCN,6)A,D[[[-S+=
M@#(_G&[0Q[$T'*6L[^Z4KI7F%NGN6=ES_FF8QI.N?6BDR$5-7,XX)G'L?U?$
M/0W9U*4_F88L36A ZH49&[TA;/)_A&5ARN(?I&UG+H@[BD,VGGZ7KC7?E#8A
MLNET>.S_N[@9)3GNVI]+.PRS4=:U%Z5EX834;]LK]\FSZ=3KG)'.0S<:C\/)
M-(5SMT-T<IU3OEO_:!G(52-M>[,?9X_OXFW[''QW;Q_5!ZZW0AHH<4.A\6"<
M!:#;AZHUK*K]X[!2EIX:/RSH;4?M'&A]HY3M#;?!\=_"XA]02P,$%     @
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
MD@Y$PRN>*V0]=8\R]6"#!%-269;@:DM<;HZ8ADD_)E,7ACP3$(6,\:)@1.3
M.\^K4VQP"B!AN1WXYYT(<-SGJ+@#PHY[8<>#(OR8Z[20NE&MM,F:4RHHF=46
M"AVWVILK,&DM4/G@M+NG@XD+_D3C;+[E*CN6!@8M.)ZXOI$;K'N[[=-].XEH
ME1:'BH>T_TU::M/_D9!8Y>"?AT.#G'"$$@^B:L09Q"NS)L6AP24G21+\3F;$
MK'@2LR6,!2,T'GDA:)9,611[;,E1IRQ-6G;0$?S \3R2YP3\CIQ@$B*E:%B5
M;NS,#!L6LK:.Q%P_B6EN,L/<20@ABPI9I[!3>8:2FU.AL"G.GSBSQ&,S8,8L
M=&8!V1A%D"!=!-@KM$H([;3/%?PEX-%'4+P2J]R*()7K"H[-:)[OQ![)Q4^
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
M   9    >&PO=V]R:W-H965T<R]S:&5E=#(V+GAM;)U8VV[CMA;]%<)M!S;
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
M.,FG'JBA:0\3(SO7*+?24-MUPYK>.536@/9WDG2.$WO Z>5<_0]02P,$%
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
MX&BHE2"J(J+J*%[8B_LC5[H,L,U4%UX@S 3]/>%<K3MF@::4F_P#4$L#!!0
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
MK'&];K937,Y:BGP<*(GCE(0GM\T[>8DK]MZ?(<I7' ",S\:5W*0H1Z5FFC.
M<@*OJQU+[FUWHYXWX\(]=&6:S5Q7\IEG3VX!M"1P6FI+[GZ&#3Y(WRVC4C-#
M H FQF5%"E+.HU(S@[?G1E+9D<*2T=SW#O^JM+1#K!L!3"5PINJ?^#C/X,/U
MWL4A"EX">$Z,R[<4I#!(I68&#V!0$'F7PF)>6K\"O=Q+ > E</#ZB:^ E7KP
MX7KOXA"U,0'4)\;E=PI29*12,X,'R"B(/$_1M#,;V8\U,6]& 2KS<"IKR_PN
MCCXNW?ONE"&*91[@GS<NT],C!44J-3-X (H>D>GI-=U,Q=W9(>1;FKD.%VV0
M[P&4>3B4=4UWG'#P07KOW1 E-6_O?K1Q^:$>[3UM0^"A!WCH$?FA7M/I/+R\
MHTW,^0&!>3B!]<YW*\[@@_3>LB&*;!ZPGC<NG]0C94$J-3-XP((>D4_J-2U0
MZX7>9J<B%WK@+@_GKJY$W^GN+GRLWELX1!U. O')<5FJDI02J=3,X $E2KQ(
MV#G_I<TR;=[=96G6?G>7!!Z3)SBK7;(?YQY\U-Y;.41]3@(*RG'YL)(4&JG4
MS. !-$J\9MC]>] T6@^Y!VUBSF_OM,%I-FSW+X 5A/!1>^_A$-4Y"6PHQV75
M2E**I%(S@P<4*?&*8?<O0-.+M?XB:#9#?A$ K\G3'-M>M__B8_3>N"$*<A+
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
MET8:K=!XF%11V)[=Y+:Q<.S,=AOX][.=$ )-*QZ6A\0?]QR?8U_?)#473[(
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
M'2B"O-H'JDXDVY4[(X],2I:6AUM*(LH+ W5]S9A\/BENT.S&+?\'4$L#!!0
M   ( "6 55;2!0N9FP,  (D0   9    >&PO=V]R:W-H965T<R]S:&5E=#0P
M+GAM;+6876_;-A2&_PJA%D4++)&H;Z>V@,1"L0 9%L3K=C'T@I:/;:*4Z))T
MW/S[D9*BR):B.89[$XO2.:_/\XHF#S/><?%=K@$4^IFS0DZLM5*;*]N6V1IR
M(B_Y!@K]9,E%3I0>BI4M-P+(HDS*F>TZ3FCGA!96,B[OW8MDS+>*T0+N!9+;
M/"?BZ088WTTL;#W?>*"KM3(W[&2\(2N8@?JZN1=Z9#<J"YI#(2DOD(#EQ+K&
M5RGV3$(9\3>%G6Q=(X,RY_R[&=PN)I9C*@(&F3(21'\\PA08,TJZCA^UJ-5\
MITEL7S^K?RGA-<R<2)AR]@]=J/7$BBVT@"79,O7 =[]##108O8PS6?Y%NSK6
ML5"VE8KG=;*N(*=%]4E^UD:T$K#_2H);)[C')GAU@G=L@E\G^*4S%4KI0TH4
M2<:"[Y PT5K-7)1FEMD:GQ;FO<^4T$^ISE/)#6&DR #-RDF6@B*4272!;@M%
MBA6=,T#74NI'U]F/+96T?%D?Z[A/.O#K+$4?WW]"[Q$MT%]KOI6D6,BQK71Q
MYBOLK"[DIBK$?:60%+)+Y.'?D.NX;D_Z]/ATW).>'I_N[*?;VM'&5K>QU2WU
MO%?TOM""*KBXTW-ZT?%2HG_O=#RZ59#+;WU65>)^O[A9"J[DAF0PL?1O78)X
M!"OY\ Z'SN<^X\XIEIY);,]4KS'5&U)/6CX2XV.?<Y5"4"J8->\Q\=W &]N/
M;4>Z06$<!_M!Z6 M)Y+Z#:D_2/JG6H- C!>K"P4BKW![?U253MA"P7X<CPZ
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
M.GOG9:07*E?7>3*KYN^A<%^I[@;@?A"\WJ]O[,T?#:LCM2:L8 LK^)^#7M7
M;E0/7B&S=N)H9!VI-9%MLWO?FL1.[]; SV:4,FG6ZUVN5W8KF4[3]$[5PJ[4
MF@RWF;H_^-$!LM-<OE.UL"NU)OSMP<"WGPS>&R!?)^F#UOC8Y=DA[$JMR6I[
MC/#MYXA9DG!(L 24@40Y9Q& RJB7G*5ET*SQM2(KQ?6&6#,;>>?^/K$NCQIA
M5VHE,7?GRBP%GIBK1X$B5F2RO#VK2^OKS9FYU'.WU<N[T5O,$Y()1&&I3+WS
M"S6TO+QN+%\DR\T%W())R5+SN (< ]<5U/<E8_+E13=07_I._P502P,$%
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
M9WO1W4S3;*\5D&VF@%Q).,V_7PD(WY:-J^0B!BP='3T<CLZ+M7RF[#O?$B+
MSSA*^/5H*\3N:C+A_I;$F(_ICB3RFS5E,1;RE&TF?,<(#K).<31!EN5.8APF
MH]4RNW;/5DN:BBA,R#T#/(UCS%YN242?KT=P]'KA2[C9"G5ALEKN\(8\$/&X
MNV?R;%):"<*8)#RD"6!D?3VZ@5<>FJL.68O_0O+,:\= 3>6)TN_JY%-P/;*4
M1R0BOE FL/S8DSL21<J2].-'8714CJDZUH]?K?^535Y.Y@ES<D>C;V$@MM>C
M^0@$9(W32'RASW^38D*.LN?3B&?_P7/1UAH!/^6"QD5GZ4$<)ODG_EF J'5
MSH$.J.B 6AV@?:##M.@P/;6#772P,S+Y5#(.'A9XM63T&3#56EI3!QG,K+><
M?IBH^_X@F/PVE/W$ZD%0__N61@%A_ _P\4<:BA=P";++X-^=NC<<W*B;H[YX
M[Q&!PXA_D$T>'SSP_MT'\ Y, -]B1C@($_"8A()?U"Y\W=*4XR20%]\USI<3
M(?U77DS\PM?;W%=TP%>(P&>:B"T''Y. !$T#$SGQ<O;H=?:W2&O1(_X83.$%
M0!9"/0[=G=X=]G3W3N]N:68S+>_E-+,WU=W+UYMV ?Y)XR?" %V#A^QN7/41
MSRW:_195TKGB.^R3ZY',*IRP/1FM?O\-NM:??;1,&O,,&6N0M$N2MLYZ09(6
MX2_3)1<R9,-D<P&>R"9,$GD(WLMHSN/\0Q_9? 0W&T%EW_W*=>WY<K*O$].Z
M,928(6,-8DY)S!E ;,-P(DAP#)'3081L-&TATHX[%)$A8PU$;HG('8"(_"3,
M#_EQ2&X'TN5,99L&).W(0R$9,M: -"LAS09 DG7-FH0G1-*L"\EM!Y)VX*&,
M#!EK,)J7C.;G9B>2?1ZC->_0FJ/YK(6KVZB;OSRMHV=B6)08%D.6NV]9B4>"
MRYL]8;)D!1^+)PS<L]"7_^5:F"V$O>O@PN0Z:-*89\A8 S&TJO+0,K,2!C2*
M,.-@)S%GH=<;><5H\UI4P=G8=ENQIW=J*$%3UIH(:Q4V/'-I/)%94<&C&C3'
M'5MV&YK6C<'0#%EK0D,5-'3V8GDB-M3%MABCV:+^UT:H=6HP0D/6F@@K-0"U
M);)V*3T1X;2+<.J,9YW(,UKXF[+6Q%:5_O#LVK^VNIX(T.ZD.[083]O56T^S
MGJSHZ1T_%TQ5X4-GR'I[$P2A.L01\$+N1Y2G<M1>"B9+^#NCUCQ3UII,*TD
M]9J@+%IP4;0PHE[6J2CS:2(8]D4J 0O"X@O #T5F+W3]P#/P0E3\NB#.7JGT
MDC:J*DQ9:Y*N= 74"XN;S8:1#18$A))KF/#0!WL<I60HUWP8IYX2D2/KY_8S
M;51NF++6A%<)#CA$<>P)5^N(9"07YAWQU8F@V>5CR@/V2 ^KR\Z0K"C8O85(
M@95*@=H*?2"[$]>517==F8_=SKIL5(B8LM9\4ULI$:17(K^0*C70^^@><>0U
M==I%Z@3(!@%^Z4VA>E-#[X I:\T[4 D9I!<R)Z?0H;QA3TJ%%G1:X:QW;S#,
MMQ XJ!(XZ R!@Y\B<BR%%G;K*=2VH-5F953)F++69%4I&31$R;19G98RBR$:
M-;;=%=%Z3P9S>PLI@RHI@_12YA=29@UR+TW]P&Z1(F&>(F65>3!!&OT%Q)2U
M)N]*(2']CR G)\AC=)U.0D1P#NWV&VV].X/AO8440I440@-^'KEH$ZR>[B'/
MO-MYYMWYV)Y:U5];BNN='(ST+30/JC0/TFN>KU3(Q[M-<DU9[85:(S![(?8(
M'BC)M<%UFSD+M]W,ZVGFSFJMFC.M! K2"Y1/G*<X\8GZM=NGL<PZQ<32)) A
M0O)]#:%LD:A])F 7815D"1&J1_%N[-#[BV+L@SX7 +JM($1= -UFB\[\)[4-
M'3%AFVQC#)<S2Q.1[VXHKY:;;VZR+2>MZ[?PRLNWT%1F\AT]GS';R*@ $5E+
MD]9X)CUB^2:9_$307;9MY(D*0>/L<$NPI*D:R._7E(K7$S5 N55I]3]02P,$
M%     @ )8!55A2G+&R. P  : X  !D   !X;"]W;W)K<VAE971S+W-H965T
M-3(N>&ULQ5?;;MLX$/V5@7:QVP*-=?$E=M86D$3I!6@71H-M'XH^,-+8(D*)
M"DG9-="/+TDIBNS*1@IHT3S$(C7G#.>0AR+G6R[N98JHX%O&<KEP4J6*"]>5
M<8H9D0->8*[?K+C(B-)-L79E(9 D%I0Q-_"\B9L1FCOAW/8M13CGI6(TQZ4
M6689$;LK9'R[<'SGL>,C7:?*=+CAO"!KO$7U7[$4NN4V+ G-,)>4YR!PM7 N
M_8O(]PS 1GRBN)6M9S"EW'%^;QKODH7CF1$APU@9"J)_-GB-C!DF/8Z'FM1I
M<AI@^_F1_;4M7A=S1R1><_:9)BI=.%,'$ER1DJF/?/L6ZX+&AB_F3-K_L*UC
M/0?B4BJ>U6 ]@HSFU2_Y5@O1 OB3(X"@!@2'@-$1P+ &#)\+&-6 D56F*L7J
M$!%%PKG@6Q F6K.9!RNF1>OR:6[F_58)_99JG IO%8_O4\X2%/)ON'DHJ=K!
M&;PF5, GPDH$OH+++1&)A#>"Y H3>!&A(I3)ESKP3W!!ID2@G+M*C\>PNG&=
M^ZK*'1S)[0?P@><JE7"3)YCL$[BZD*::X+&:J^ D8X3Q (;^*PB\(.@8T/7S
MX7X'/'H^W#M1S;"9FZ'E&QZ;&Z/KF5G5"5SS3%M=$FN62Z%G8HW:?@KN=M".
M6Y*=[;93!E_>:TIXIS"37[OFI\H_ZLYOMIP+69 8%X[>4R2*#3KA7W_X$^^?
M+FW[)(MZ(MO3?=3H/CK%'GZVFP4F9V2#0F]^L#8+'Q*B$%;&&!MKC )%M?1?
M@30N EZ8V9'P@N:0<,:(D$]!+[OTK\8QM>,P._0F'/J#Z63N;MK"_AP53 ;C
M\7Y4]'/45 =YK3^_0>S),FYD&9^4Y>9VN>PJXB3J5Q=1GV113V1[:DT:M2:_
MV;R3/G7ODRSJB6Q/]_-&]_->S=NE;)7!#UI>\K69_ -?=H4%@]GPP)@=8>/!
M..@VX[0I<WJRS,#SS^%?GC^4A-$5U8OG)BL8WR&"_:3#LA1QJE<5+!G)X3L<
M<^_)-+^ZBOHDBWHBVY-WUL@[^\WNG?6I>Y]D44]D>[K[WM-YU/O?_5NG:'\+
MQ]J8A_[M"M/./+!O1Y0_&XP.[.NVCN 9BK6]RDB(>9FKZOS:]#;7I4M[23CH
MOS+7*'NT?Z*I[F ?B%A3?;Q@N-*4WN!<?]Y$=:VI&HH7]J!_QY6^-MC'5%\%
M49@ _7[%N7ILF 3-Y3+\ 5!+ P04    "  E@%56BRHL#<0$  "Z&P  &0
M 'AL+W=O<FMS:&5E=',O<VAE970U,RYX;6S%6=MNXS80_15"7;2[0#82J9N=
MV@;B*&T7Z )!LML^%'U@)-HB(HE>DK:3OR]UB>Y68X! 7FR)FCF<<\BAAN+B
MR/B3B F1X#E-,K$T8BEW5Z8IPIBD6%RR'<G4DPWC*9;JEF]-L>,$1X53FIC(
MLCPSQ30S5HNB[8ZO%FPO$YJ1.P[$/DTQ?UF3A!V7!C1>&^[I-I9Y@[E:[/"6
M/!#Y?7?'U9U9HT0T)9F@+ .<;);&-;P*$,H="HN_*#F*UC7(J3PR]I3??(F6
MAI5'1!(2RAP"J[\#N2%)DB.I.'Y4H$;=9^[8OGY%_ZT@K\@\8D%N6/(WC62\
M-&8&B,@&[Q-YSXY_D(J0F^.%+!'%+SA6MI8!PKV0+*V<500IS<I__%P)T7*
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
MVGZ#+I\SQU<J;OR7;%O;L_. E&N#2G1@&X%@LOW3QZX.>X#X$"#I ,E+0'8
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
MWLRE)I!L93KUG$G5]\VR4*,<N :HYPO&Y#;0!W1_#I*_4$L#!!0    ( "6
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
ML;I/>%7Y5PW)=J86?F%25=;FLU"O)<2U@1K?,.7BNJ$G:-Y?B_\!4$L#!!0
M   ( "6 559G%KL$2 0  /47   9    >&PO=V]R:W-H965T<R]S:&5E=#8W
M+GAM;,58VV[C-A#]%4)=+':!KB7JKJQMP(G2=H$$".*F?2CZP$BT3:PDNB1M
M9_^^U,62=;$0+PCX)9;H.8<S9W24,:<'RK[S#<8"O*5)QF?:1HCMC:[S:(-3
MQ"=TBS/YS8JR% EYR]8ZWS*,X@*4)KII&*Z>(I)I\VFQ]L3F4[H3"<GP$P-\
MEZ:(_;C%"3W,-*@=%Y[)>B/R!7T^W:(U7F+QLGUB\DZO66*2XHP3F@&&5S-M
M 6]"&.2 (N(O@@_\Y!KDI;Q2^CV_^1;/-"//""<X$CD%DA][?(>3)&>2>?Q7
MD6KUGCGP]/K(_EM1O"SF%7%\1Y._22PV,\W70(Q7:)>(9WKX U<%.3E?1!->
M_ 6'*M;00+3C@J856&:0DJS\1&^5$"< Z)X!F!7 [ +L,P"K ECO!=@5P"Z4
M*4LI= B10/,IHP? \FC)EE\48A9H63[)\KXO!9/?$HD3\V>\Q]D.@Q6C*;BC
MF6"R$UPF(3;@KM@>,PZ^@&/<ZP_P.Z9KAK8;$LG5==Z\3R$6B"3\LPQ\68;@
MTX?/X ,@&?AS0W<<93&?ZD(FFV^I1U5BMV5BYIG$H D>93H;#NZS&,=M EU6
M69=J'DN]-4<90QQ-@ 5_!:9AF@,)W;T?#@?@X?OAQD@U5MTXJ^"SQAO'R\[=
MOPG,,I2<]$S*#AYHMO[R((T5@P7G6#;VGP?) [X)G/)_AYI2;FH/;YJ_A&[X
M%D5XILFW#,=LC[7YQU^@:WP=$E0E6:B(K"6V78MMC[$?Q1X2K 0Z!3!_R>[G
MONOYIC?5]Z=2],-<+[ "NQT6]L,<&YI64(>UTG?J])W1]%\R(N0CL!1(X$$K
MCL(O[;I*LE 164LVMY;-O8;%7)5BJR0+%9&UQ/9JL;V?M5@)=$],X?FN;Y@=
MB_7#'-<)W*[%^F&V9WG>&8OY=?K^:/H+^4"0"'& WZ)D%Y-L#5XFR\E0.:-$
ME_9?)5FHB*PE8% +&%S#;(%*L562A8K(6F)#HQG[C)^U6X5L.03Z0==N0V&.
M!X..W0;"3._4O.T"3N96.%K _8[)'S^#^8\"+^VY4K90%5M;-+,1S;R&R:I=
M52FNDBU4Q=96O)G2X>A<.NHSJ^\,-X!NUV?],-OQO9[/!MC,P'3.^*R9?.'X
MZ/M(XCC!X!YQ 3ZB=/L5+%;Y?[K!BD:I+GX.5+*%JMC:,C83.'2NXCRED[M2
MME 56UOQ9GB'H^/JJ//<GE>@X?M.UWD#88$!_:[S!L)LPSOGO&8@AN,3\8(3
M!)Y01%8D&JQB%'YQ[U6RA:K8VM(UPSCTK^(VI:.[4K90%5M;\69ZAZ/SZJC;
M@MZA!K2LWCC9CS)]V/WQ-A3E.G[':OK)>:AL][HX5^8@HKM,E.>%]6I]=KTH
M3FP[Z[?YF79QSMK0E ?BCXBM2<9!@E>2TIAX,B56GC&7-X)NBU/75RKD,U=<
M;C"*,<L#Y/<K2L7Q)M^@/NF?_P]02P,$%     @ )8!55H;F&?TA P  ?PT
M !D   !X;"]W;W)K<VAE971S+W-H965T-C@N>&ULQ5==3]LP%/TK5H8F)@'Y
MZB=K(T'+-B0F5>W8'J8]N,EM8Y'8P79;^/>SDS0D)414BL0+C9-[CL\]/BTW
MHQWC#R($D.@ICJ@8&Z&4R:5I"C^$&(L+E@!53U:,QUBJ)5^;(N& @Q041Z9C
M63TSQH0:WBB]-^/>B&UD1"C,.!*;.,;\^1HBMAL;MK&_,2?K4.H;IC=*\!H6
M(.^3&5<KLV )2 Q4$$81A]78N+(O)[:C 6G%;P([4;I&NI4E8P]Z<1N,#4LK
M@@A\J2FP^MC"!*)(,RD=CSFI4>RI@>7K/?NWM'G5S!(+F+#H#PED.#8&!@I@
MA3>1G+/=#\@;ZFH^GT4B_8MV>:UE('\C)(MSL%(0$YI]XJ?<B!+ [KP!<'*
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
M]4]T,6\JTF>9_$O@AHHE2R6)88&23F> [Q21%]=Y0_',U*=SKO#TF,<(/TA
MZ DXON!<;1MZ@?(3Q_\+4$L#!!0    ( "6 55:4C5$Y10,  ,H4   -
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
MK_'Z/TGU>#XW7R]_67[OG-R7"\[U;45Y^@M02P,$%     @ )8!55D!K%[H
M @  QBD  !,   !;0V]N=&5N=%]4>7!E<UTN>&ULS=I-3L,P$ 7@JU39HL;U
M;P%1-L 66' !DTS;J$ELV0;*[7%20 )!!2H2;].HM3UOXI&^5<_NGCW%R;9K
M^[@HUBGY4\9BM:;.QM)YZO/*TH7.IOPUK)BWU<:NB(G9S+#*]8GZ-$U#C>+\
M[)*6]J%-DZMM_CDVKE\4@=I83"YV&X>L16&];YO*IKS.'OOZ4\KT-:',)\<]
M<=WX>)0W%.S+A&'E^X#7<S>/%$)3T^36AG1MN[R+;5L6TW-+L=Q?XHL>W7+9
M5%2[ZJ'+1\KH ]DZKHE2UY:[HD?[DU.^8=I]\H/SQS+[ O/.V^!\S!,+]/NX
MMY$,IZ<^%Z*0FOVO^)Z82Q_\?C1,NZ;ZA]GY>I]<V(SSB&Q\''[''V?\7O^7
M?0B0/B1('PJD#PW2AP'I8P[2QS%('R<@?? 92B,HHG(44CF*J1P%58ZB*D=A
ME:.XRE%@Y2BR"A19!8JL D56@2*K0)%5H,@J4&05*+(*%%D%BJP215:)(JM$
MD56BR"I19)4HLDH4626*K!)%5HDBJT*15:'(JE!D52BR*A19%8JL"D56A2*K
M0I%5H<BJ4635*+)J%%DUBJP:15:-(JM&D56CR*I19-4HLAH460V*K 9%5H,B
MJT&1U:#(:E!D-2BR&A19#8JL<Q19YRBRSO]3UGOG-G\</S[+SC;]6SX;_[YY
M_@)02P$"% ,4    "  E@%56!T%-8H$   "Q    $               @ $
M    9&]C4')O<',O87!P+GAM;%!+ 0(4 Q0    ( "6 5580B\J-[@   "L"
M   1              "  :\   !D;V-0<F]P<R]C;W)E+GAM;%!+ 0(4 Q0
M   ( "6 55:97)PC$ 8  )PG   3              "  <P!  !X;"]T:&5M
M92]T:&5M93$N>&UL4$L! A0#%     @ )8!55GX\HP*@!P  #R\  !@
M         ("!#0@  'AL+W=O<FMS:&5E=',O<VAE970Q+GAM;%!+ 0(4 Q0
M   ( "6 559EB1D?-0(  +,%   8              " @>,/  !X;"]W;W)K
M<VAE971S+W-H965T,BYX;6Q02P$"% ,4    "  E@%560T # T<&   F&@
M&               @(%.$@  >&PO=V]R:W-H965T<R]S:&5E=#,N>&UL4$L!
M A0#%     @ )8!55MC7;6/P @  50H  !@              ("!RQ@  'AL
M+W=O<FMS:&5E=',O<VAE970T+GAM;%!+ 0(4 Q0    ( "6 55;\WHRB\ 8
M $<@   8              " @?$;  !X;"]W;W)K<VAE971S+W-H965T-2YX
M;6Q02P$"% ,4    "  E@%568A=.T<D'  #D/   &               @($7
M(P  >&PO=V]R:W-H965T<R]S:&5E=#8N>&UL4$L! A0#%     @ )8!55M9;
MX2A\"   ;2@  !@              ("!%BL  'AL+W=O<FMS:&5E=',O<VAE
M970W+GAM;%!+ 0(4 Q0    ( "6 5593%&.6-AT  "-:   8
M  " @<@S  !X;"]W;W)K<VAE971S+W-H965T."YX;6Q02P$"% ,4    "  E
M@%56>!?72#8$  !;"@  &               @($T40  >&PO=V]R:W-H965T
M<R]S:&5E=#DN>&UL4$L! A0#%     @ )8!55K*>F])6!0  N0T  !D
M         ("!H%4  'AL+W=O<FMS:&5E=',O<VAE970Q,"YX;6Q02P$"% ,4
M    "  E@%56D]?R[!,)  ".%@  &0              @($M6P  >&PO=V]R
M:W-H965T<R]S:&5E=#$Q+GAM;%!+ 0(4 Q0    ( "6 5580[3G'V0H  'D=
M   9              " @7=D  !X;"]W;W)K<VAE971S+W-H965T,3(N>&UL
M4$L! A0#%     @ )8!55CC\G)]8%   =4$  !D              ("!AV\
M 'AL+W=O<FMS:&5E=',O<VAE970Q,RYX;6Q02P$"% ,4    "  E@%56<&6N
MZ2T#  #Q!@  &0              @($6A   >&PO=V]R:W-H965T<R]S:&5E
M=#$T+GAM;%!+ 0(4 Q0    ( "6 558?TKYY-@0   \*   9
M  " @7J'  !X;"]W;W)K<VAE971S+W-H965T,34N>&UL4$L! A0#%     @
M)8!55@GB(CPB"P  'QT  !D              ("!YXL  'AL+W=O<FMS:&5E
M=',O<VAE970Q-BYX;6Q02P$"% ,4    "  E@%56K[8@ML\#  #""   &0
M            @(% EP  >&PO=V]R:W-H965T<R]S:&5E=#$W+GAM;%!+ 0(4
M Q0    ( "6 55;O*LP") @  #04   9              " @4:;  !X;"]W
M;W)K<VAE971S+W-H965T,3@N>&UL4$L! A0#%     @ )8!55F+X15W"&@
MV%8  !D              ("!H:,  'AL+W=O<FMS:&5E=',O<VAE970Q.2YX
M;6Q02P$"% ,4    "  E@%56SE3]8_ #  "]"0  &0              @(&:
MO@  >&PO=V]R:W-H965T<R]S:&5E=#(P+GAM;%!+ 0(4 Q0    ( "6 55:1
M!G7 <P,  #D(   9              " @<'"  !X;"]W;W)K<VAE971S+W-H
M965T,C$N>&UL4$L! A0#%     @ )8!55B%8HJH\!P  ZQ,  !D
M     ("!:\8  'AL+W=O<FMS:&5E=',O<VAE970R,BYX;6Q02P$"% ,4
M"  E@%56:CA4&W8#  !&"0  &0              @('>S0  >&PO=V]R:W-H
M965T<R]S:&5E=#(S+GAM;%!+ 0(4 Q0    ( "6 55:D)LV(+@<  '@3   9
M              " @8O1  !X;"]W;W)K<VAE971S+W-H965T,C0N>&UL4$L!
M A0#%     @ )8!55L@>&Q\" P  H08  !D              ("!\-@  'AL
M+W=O<FMS:&5E=',O<VAE970R-2YX;6Q02P$"% ,4    "  E@%56U?'-!(0&
M  "]$   &0              @($IW   >&PO=V]R:W-H965T<R]S:&5E=#(V
M+GAM;%!+ 0(4 Q0    ( "6 558CDV8?40,  $4'   9              "
M@>3B  !X;"]W;W)K<VAE971S+W-H965T,C<N>&UL4$L! A0#%     @ )8!5
M5H(>HMJ: P  $ @  !D              ("!;.8  'AL+W=O<FMS:&5E=',O
M<VAE970R."YX;6Q02P$"% ,4    "  E@%56TH.='1<"  !K!   &0
M        @($]Z@  >&PO=V]R:W-H965T<R]S:&5E=#(Y+GAM;%!+ 0(4 Q0
M   ( "6 558"],>8*0,  -8-   9              " @8OL  !X;"]W;W)K
M<VAE971S+W-H965T,S N>&UL4$L! A0#%     @ )8!55CD-?%1O!   .QH
M !D              ("!Z^\  'AL+W=O<FMS:&5E=',O<VAE970S,2YX;6Q0
M2P$"% ,4    "  E@%56$@>2$SH%  "<(P  &0              @(&1]
M>&PO=V]R:W-H965T<R]S:&5E=#,R+GAM;%!+ 0(4 Q0    ( "6 559\AC X
M$08  $TN   9              " @0+Z  !X;"]W;W)K<VAE971S+W-H965T
M,S,N>&UL4$L! A0#%     @ )8!55D[K>0EB"   0U0  !D
M ("!2@ ! 'AL+W=O<FMS:&5E=',O<VAE970S-"YX;6Q02P$"% ,4    "  E
M@%56'7P/5VP"  !P!@  &0              @('C" $ >&PO=V]R:W-H965T
M<R]S:&5E=#,U+GAM;%!+ 0(4 Q0    ( "6 559T9-W_%P0  ,P0   9
M          " @88+ 0!X;"]W;W)K<VAE971S+W-H965T,S8N>&UL4$L! A0#
M%     @ )8!55H'9'H=A @  / 8  !D              ("!U \! 'AL+W=O
M<FMS:&5E=',O<VAE970S-RYX;6Q02P$"% ,4    "  E@%568Q,)8X<"  "5
M!@  &0              @(%L$@$ >&PO=V]R:W-H965T<R]S:&5E=#,X+GAM
M;%!+ 0(4 Q0    ( "6 55:([X&!C00  )D;   9              " @2H5
M 0!X;"]W;W)K<VAE971S+W-H965T,SDN>&UL4$L! A0#%     @ )8!55M(%
M"YF; P  B1   !D              ("![AD! 'AL+W=O<FMS:&5E=',O<VAE
M970T,"YX;6Q02P$"% ,4    "  E@%56%K+4N$ $   ;#P  &0
M    @(' '0$ >&PO=V]R:W-H965T<R]S:&5E=#0Q+GAM;%!+ 0(4 Q0    (
M "6 5598JXSU' ,  #L)   9              " @3<B 0!X;"]W;W)K<VAE
M971S+W-H965T-#(N>&UL4$L! A0#%     @ )8!55N0839M[ P  P!(  !D
M             ("!BB4! 'AL+W=O<FMS:&5E=',O<VAE970T,RYX;6Q02P$"
M% ,4    "  E@%560$\A5;("   ;!P  &0              @($\*0$ >&PO
M=V]R:W-H965T<R]S:&5E=#0T+GAM;%!+ 0(4 Q0    ( "6 558:ABZ5K (
M ' (   9              " @24L 0!X;"]W;W)K<VAE971S+W-H965T-#4N
M>&UL4$L! A0#%     @ )8!55N7KAHN] @  [P<  !D              ("!
M""\! 'AL+W=O<FMS:&5E=',O<VAE970T-BYX;6Q02P$"% ,4    "  E@%56
M)"IH#P,$  #6$0  &0              @('\,0$ >&PO=V]R:W-H965T<R]S
M:&5E=#0W+GAM;%!+ 0(4 Q0    ( "6 55;,%F<Z7P0    6   9
M      " @38V 0!X;"]W;W)K<VAE971S+W-H965T-#@N>&UL4$L! A0#%
M  @ )8!55LE26F]< @  <04  !D              ("!S#H! 'AL+W=O<FMS
M:&5E=',O<VAE970T.2YX;6Q02P$"% ,4    "  E@%56@7-_C$D*  "G<
M&0              @(%?/0$ >&PO=V]R:W-H965T<R]S:&5E=#4P+GAM;%!+
M 0(4 Q0    ( "6 55;3+M3U#P8  +8D   9              " @=]' 0!X
M;"]W;W)K<VAE971S+W-H965T-3$N>&UL4$L! A0#%     @ )8!55A2G+&R.
M P  : X  !D              ("!)4X! 'AL+W=O<FMS:&5E=',O<VAE970U
M,BYX;6Q02P$"% ,4    "  E@%56BRHL#<0$  "Z&P  &0
M@('J40$ >&PO=V]R:W-H965T<R]S:&5E=#4S+GAM;%!+ 0(4 Q0    ( "6
M55:9UCCUS 8  ,(P   9              " @>56 0!X;"]W;W)K<VAE971S
M+W-H965T-30N>&UL4$L! A0#%     @ )8!55NL)\D1V P  (P\  !D
M         ("!Z%T! 'AL+W=O<FMS:&5E=',O<VAE970U-2YX;6Q02P$"% ,4
M    "  E@%56JNI;96H#  #8#   &0              @(&580$ >&PO=V]R
M:W-H965T<R]S:&5E=#4V+GAM;%!+ 0(4 Q0    ( "6 55:-0Y-!B@,  &X0
M   9              " @39E 0!X;"]W;W)K<VAE971S+W-H965T-3<N>&UL
M4$L! A0#%     @ )8!55O(6Z#.# @  G@8  !D              ("!]V@!
M 'AL+W=O<FMS:&5E=',O<VAE970U."YX;6Q02P$"% ,4    "  E@%56U_\,
MLZ,$  "C&   &0              @(&Q:P$ >&PO=V]R:W-H965T<R]S:&5E
M=#4Y+GAM;%!+ 0(4 Q0    ( "6 55:(MN$^S (  "@(   9
M  " @8MP 0!X;"]W;W)K<VAE971S+W-H965T-C N>&UL4$L! A0#%     @
M)8!55D%9N&21 P  JPT  !D              ("!CG,! 'AL+W=O<FMS:&5E
M=',O<VAE970V,2YX;6Q02P$"% ,4    "  E@%56!YF81D<$  "W$0  &0
M            @(%6=P$ >&PO=V]R:W-H965T<R]S:&5E=#8R+GAM;%!+ 0(4
M Q0    ( "6 558H)([9X@,  /<-   9              " @=1[ 0!X;"]W
M;W)K<VAE971S+W-H965T-C,N>&UL4$L! A0#%     @ )8!55D9>Q(3\ @
MN @  !D              ("![7\! 'AL+W=O<FMS:&5E=',O<VAE970V-"YX
M;6Q02P$"% ,4    "  E@%56^I.%HZ@$  #B&P  &0              @($@
M@P$ >&PO=V]R:W-H965T<R]S:&5E=#8U+GAM;%!+ 0(4 Q0    ( "6 5591
MOBPDS0,  (L-   9              " @?^' 0!X;"]W;W)K<VAE971S+W-H
M965T-C8N>&UL4$L! A0#%     @ )8!55F<6NP1(!   ]1<  !D
M     ("! XP! 'AL+W=O<FMS:&5E=',O<VAE970V-RYX;6Q02P$"% ,4
M"  E@%56AN89_2$#  !_#0  &0              @(&"D $ >&PO=V]R:W-H
M965T<R]S:&5E=#8X+GAM;%!+ 0(4 Q0    ( "6 55;N>[T(F0(  $$'   9
M              " @=J3 0!X;"]W;W)K<VAE971S+W-H965T-CDN>&UL4$L!
M A0#%     @ )8!55DFZQ@"W @  I <  !D              ("!JI8! 'AL
M+W=O<FMS:&5E=',O<VAE970W,"YX;6Q02P$"% ,4    "  E@%56:NOQHF #
M  #+#   &0              @(&8F0$ >&PO=V]R:W-H965T<R]S:&5E=#<Q
M+GAM;%!+ 0(4 Q0    ( "6 558%;U#B%@,  .X,   9              "
M@2^= 0!X;"]W;W)K<VAE971S+W-H965T-S(N>&UL4$L! A0#%     @ )8!5
M5I2-43E% P  RA0   T              ( !?* ! 'AL+W-T>6QE<RYX;6Q0
M2P$"% ,4    "  E@%56EXJ[',     3 @  "P              @ 'LHP$
M7W)E;',O+G)E;'-02P$"% ,4    "  E@%567GW,^5\%   $,   #P
M        @ '5I $ >&PO=V]R:V)O;VLN>&UL4$L! A0#%     @ )8!55JQM
M4%<\ @  KRH  !H              ( !8:H! 'AL+U]R96QS+W=O<FMB;V]K
M+GAM;"YR96QS4$L! A0#%     @ )8!55D!K%[H  @  QBD  !,
M     ( !U:P! %M#;VYT96YT7U1Y<&5S72YX;6Q02P4&     %  4 #G%0
&!J\!

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>87
<FILENAME>Show.js
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
// Edgar(tm) Renderer was created by staff of the U.S. Securities and Exchange Commission.  Data and content created by government employees within the scope of their employment are not subject to domestic copyright protection. 17 U.S.C. 105.
var Show={};Show.LastAR=null,Show.showAR=function(a,r,w){if(Show.LastAR)Show.hideAR();var e=a;while(e&&e.nodeName!='TABLE')e=e.nextSibling;if(!e||e.nodeName!='TABLE'){var ref=((window)?w.document:document).getElementById(r);if(ref){e=ref.cloneNode(!0);
e.removeAttribute('id');a.parentNode.appendChild(e)}}
if(e)e.style.display='block';Show.LastAR=e};Show.hideAR=function(){Show.LastAR.style.display='none'};Show.toggleNext=function(a){var e=a;while(e.nodeName!='DIV')e=e.nextSibling;if(!e.style){}else if(!e.style.display){}else{var d,p_;if(e.style.display=='none'){d='block';p='-'}else{d='none';p='+'}
e.style.display=d;if(a.textContent){a.textContent=p+a.textContent.substring(1)}else{a.innerText=p+a.innerText.substring(1)}}}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>88
<FILENAME>report.css
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
/* Updated 2009-11-04 */
/* v2.2.0.24 */

/* DefRef Styles */
..report table.authRefData{
	background-color: #def;
	border: 2px solid #2F4497;
	font-size: 1em;
	position: absolute;
}

..report table.authRefData a {
	display: block;
	font-weight: bold;
}

..report table.authRefData p {
	margin-top: 0px;
}

..report table.authRefData .hide {
	background-color: #2F4497;
	padding: 1px 3px 0px 0px;
	text-align: right;
}

..report table.authRefData .hide a:hover {
	background-color: #2F4497;
}

..report table.authRefData .body {
	height: 150px;
	overflow: auto;
	width: 400px;
}

..report table.authRefData table{
	font-size: 1em;
}

/* Report Styles */
..pl a, .pl a:visited {
	color: black;
	text-decoration: none;
}

/* table */
..report {
	background-color: white;
	border: 2px solid #acf;
	clear: both;
	color: black;
	font: normal 8pt Helvetica, Arial, san-serif;
	margin-bottom: 2em;
}

..report hr {
	border: 1px solid #acf;
}

/* Top labels */
..report th {
	background-color: #acf;
	color: black;
	font-weight: bold;
	text-align: center;
}

..report th.void	{
	background-color: transparent;
	color: #000000;
	font: bold 10pt Helvetica, Arial, san-serif;
	text-align: left;
}

..report .pl {
	text-align: left;
	vertical-align: top;
	white-space: normal;
	width: 200px;
	white-space: normal; /* word-wrap: break-word; */
}

..report td.pl a.a {
	cursor: pointer;
	display: block;
	width: 200px;
	overflow: hidden;
}

..report td.pl div.a {
	width: 200px;
}

..report td.pl a:hover {
	background-color: #ffc;
}

/* Header rows... */
..report tr.rh {
	background-color: #acf;
	color: black;
	font-weight: bold;
}

/* Calendars... */
..report .rc {
	background-color: #f0f0f0;
}

/* Even rows... */
..report .re, .report .reu {
	background-color: #def;
}

..report .reu td {
	border-bottom: 1px solid black;
}

/* Odd rows... */
..report .ro, .report .rou {
	background-color: white;
}

..report .rou td {
	border-bottom: 1px solid black;
}

..report .rou table td, .report .reu table td {
	border-bottom: 0px solid black;
}

/* styles for footnote marker */
..report .fn {
	white-space: nowrap;
}

/* styles for numeric types */
..report .num, .report .nump {
	text-align: right;
	white-space: nowrap;
}

..report .nump {
	padding-left: 2em;
}

..report .nump {
	padding: 0px 0.4em 0px 2em;
}

/* styles for text types */
..report .text {
	text-align: left;
	white-space: normal;
}

..report .text .big {
	margin-bottom: 1em;
	width: 17em;
}

..report .text .more {
	display: none;
}

..report .text .note {
	font-style: italic;
	font-weight: bold;
}

..report .text .small {
	width: 10em;
}

..report sup {
	font-style: italic;
}

..report .outerFootnotes {
	font-size: 1em;
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>89
<FILENAME>FilingSummary.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version='1.0' encoding='utf-8'?>
<FilingSummary>
  <Version>3.22.4</Version>
  <ProcessingTime/>
  <ReportFormat>html</ReportFormat>
  <ContextCount>246</ContextCount>
  <ElementCount>381</ElementCount>
  <EntityCount>1</EntityCount>
  <FootnotesReported>false</FootnotesReported>
  <SegmentCount>74</SegmentCount>
  <ScenarioCount>0</ScenarioCount>
  <TuplesReported>false</TuplesReported>
  <UnitCount>5</UnitCount>
  <MyReports>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R1.htm</HtmlFileName>
      <LongName>0000001 - Document - Cover</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/Cover</Role>
      <ShortName>Cover</ShortName>
      <MenuCategory>Cover</MenuCategory>
      <Position>1</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R2.htm</HtmlFileName>
      <LongName>0000002 - Document - Audit Information</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/AuditInformation</Role>
      <ShortName>Audit Information</ShortName>
      <MenuCategory>Cover</MenuCategory>
      <Position>2</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R3.htm</HtmlFileName>
      <LongName>0000003 - Statement - Consolidated Balance Sheets</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/ConsolidatedBalanceSheets</Role>
      <ShortName>Consolidated Balance Sheets</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>3</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R4.htm</HtmlFileName>
      <LongName>0000004 - Statement - Consolidated Balance Sheets (Parenthetical)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/ConsolidatedBalanceSheetsParenthetical</Role>
      <ShortName>Consolidated Balance Sheets (Parenthetical)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>4</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R5.htm</HtmlFileName>
      <LongName>0000005 - Statement - Consolidated Statements of Comprehensive Income (Loss)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss</Role>
      <ShortName>Consolidated Statements of Comprehensive Income (Loss)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>5</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R6.htm</HtmlFileName>
      <LongName>0000006 - Statement - Consolidated Statements of Stockholders' Equity</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity</Role>
      <ShortName>Consolidated Statements of Stockholders' Equity</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>6</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R7.htm</HtmlFileName>
      <LongName>0000007 - Statement - Consolidated Statements of Cash Flows</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/ConsolidatedStatementsofCashFlows</Role>
      <ShortName>Consolidated Statements of Cash Flows</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>7</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R8.htm</HtmlFileName>
      <LongName>0000008 - Disclosure - Description of Business and Significant Accounting Policies</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPolicies</Role>
      <ShortName>Description of Business and Significant Accounting Policies</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>8</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R9.htm</HtmlFileName>
      <LongName>0000009 - Disclosure - Cash, Cash Equivalents and Marketable Securities</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/CashCashEquivalentsandMarketableSecurities</Role>
      <ShortName>Cash, Cash Equivalents and Marketable Securities</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>9</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R10.htm</HtmlFileName>
      <LongName>0000010 - Disclosure - Fair Value Measurements</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/FairValueMeasurements</Role>
      <ShortName>Fair Value Measurements</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>10</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R11.htm</HtmlFileName>
      <LongName>0000011 - Disclosure - Balance Sheet Details</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/BalanceSheetDetails</Role>
      <ShortName>Balance Sheet Details</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>11</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R12.htm</HtmlFileName>
      <LongName>0000012 - Disclosure - Commitments and Contingencies</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/CommitmentsandContingencies</Role>
      <ShortName>Commitments and Contingencies</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>12</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R13.htm</HtmlFileName>
      <LongName>0000013 - Disclosure - Stockholders' Equity</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/StockholdersEquity</Role>
      <ShortName>Stockholders' Equity</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>13</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R14.htm</HtmlFileName>
      <LongName>0000014 - Disclosure - Employee Benefit Plan</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/EmployeeBenefitPlan</Role>
      <ShortName>Employee Benefit Plan</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>14</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R15.htm</HtmlFileName>
      <LongName>0000015 - Disclosure - Accumulated Other Comprehensive Loss</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/AccumulatedOtherComprehensiveLoss</Role>
      <ShortName>Accumulated Other Comprehensive Loss</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>15</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R16.htm</HtmlFileName>
      <LongName>0000016 - Disclosure - Income Taxes</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/IncomeTaxes</Role>
      <ShortName>Income Taxes</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>16</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R17.htm</HtmlFileName>
      <LongName>0000017 - Disclosure - Net Income Per Common Share</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/NetIncomePerCommonShare</Role>
      <ShortName>Net Income Per Common Share</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>17</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R18.htm</HtmlFileName>
      <LongName>0000018 - Disclosure - Revenue from Contracts with Customers</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/RevenuefromContractswithCustomers</Role>
      <ShortName>Revenue from Contracts with Customers</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>18</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R19.htm</HtmlFileName>
      <LongName>0000019 - Disclosure - Description of Business and Significant Accounting Policies (Policies)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies</Role>
      <ShortName>Description of Business and Significant Accounting Policies (Policies)</ShortName>
      <MenuCategory>Policies</MenuCategory>
      <ParentRole>http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPolicies</ParentRole>
      <Position>19</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R20.htm</HtmlFileName>
      <LongName>0000020 - Disclosure - Cash, Cash Equivalents and Marketable Securities (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesTables</Role>
      <ShortName>Cash, Cash Equivalents and Marketable Securities (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.calix.com/role/CashCashEquivalentsandMarketableSecurities</ParentRole>
      <Position>20</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R21.htm</HtmlFileName>
      <LongName>0000021 - Disclosure - Fair Value Measurements (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/FairValueMeasurementsTables</Role>
      <ShortName>Fair Value Measurements (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.calix.com/role/FairValueMeasurements</ParentRole>
      <Position>21</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R22.htm</HtmlFileName>
      <LongName>0000022 - Disclosure - Balance Sheet Details (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/BalanceSheetDetailsTables</Role>
      <ShortName>Balance Sheet Details (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.calix.com/role/BalanceSheetDetails</ParentRole>
      <Position>22</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R23.htm</HtmlFileName>
      <LongName>0000023 - Disclosure - Commitments and Contingencies (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/CommitmentsandContingenciesTables</Role>
      <ShortName>Commitments and Contingencies (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.calix.com/role/CommitmentsandContingencies</ParentRole>
      <Position>23</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R24.htm</HtmlFileName>
      <LongName>0000024 - Disclosure - Stockholders' Equity (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/StockholdersEquityTables</Role>
      <ShortName>Stockholders' Equity (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.calix.com/role/StockholdersEquity</ParentRole>
      <Position>24</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R25.htm</HtmlFileName>
      <LongName>0000025 - Disclosure - Accumulated Other Comprehensive Loss (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/AccumulatedOtherComprehensiveLossTables</Role>
      <ShortName>Accumulated Other Comprehensive Loss (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.calix.com/role/AccumulatedOtherComprehensiveLoss</ParentRole>
      <Position>25</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R26.htm</HtmlFileName>
      <LongName>0000026 - Disclosure - Income Taxes (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/IncomeTaxesTables</Role>
      <ShortName>Income Taxes (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.calix.com/role/IncomeTaxes</ParentRole>
      <Position>26</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R27.htm</HtmlFileName>
      <LongName>0000027 - Disclosure - Net Income Per Common Share (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/NetIncomePerCommonShareTables</Role>
      <ShortName>Net Income Per Common Share (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.calix.com/role/NetIncomePerCommonShare</ParentRole>
      <Position>27</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R28.htm</HtmlFileName>
      <LongName>0000028 - Disclosure - Revenue from Contracts with Customers (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/RevenuefromContractswithCustomersTables</Role>
      <ShortName>Revenue from Contracts with Customers (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.calix.com/role/RevenuefromContractswithCustomers</ParentRole>
      <Position>28</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R29.htm</HtmlFileName>
      <LongName>0000029 - Disclosure - Description of Business and Significant Accounting Policies - Contract Costs (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesContractCostsDetails</Role>
      <ShortName>Description of Business and Significant Accounting Policies - Contract Costs (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>29</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R30.htm</HtmlFileName>
      <LongName>0000030 - Disclosure - Description of Business and Significant Accounting Policies - Useful Lives of Property and Equipment (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails</Role>
      <ShortName>Description of Business and Significant Accounting Policies - Useful Lives of Property and Equipment (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>30</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R31.htm</HtmlFileName>
      <LongName>0000031 - Disclosure - Description of Business and Significant Accounting Policies - Additional Information (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail</Role>
      <ShortName>Description of Business and Significant Accounting Policies - Additional Information (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>31</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R32.htm</HtmlFileName>
      <LongName>0000032 - Disclosure - Cash, Cash Equivalents and Marketable Securities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails</Role>
      <ShortName>Cash, Cash Equivalents and Marketable Securities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesTables</ParentRole>
      <Position>32</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R33.htm</HtmlFileName>
      <LongName>0000033 - Disclosure - Cash, Cash Equivalents, and Marketable Securities - Schedule of Marketable Securities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails</Role>
      <ShortName>Cash, Cash Equivalents, and Marketable Securities - Schedule of Marketable Securities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>33</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R34.htm</HtmlFileName>
      <LongName>0000034 - Disclosure - Fair Value Measurements (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/FairValueMeasurementsDetails</Role>
      <ShortName>Fair Value Measurements (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.calix.com/role/FairValueMeasurementsTables</ParentRole>
      <Position>34</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R35.htm</HtmlFileName>
      <LongName>0000035 - Disclosure - Balance Sheet Details - Accounts Receivable (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/BalanceSheetDetailsAccountsReceivableDetails</Role>
      <ShortName>Balance Sheet Details - Accounts Receivable (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>35</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R36.htm</HtmlFileName>
      <LongName>0000036 - Disclosure - Balance Sheet Details - Allowance and Product Return Reserve (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails</Role>
      <ShortName>Balance Sheet Details - Allowance and Product Return Reserve (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>36</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R37.htm</HtmlFileName>
      <LongName>0000037 - Disclosure - Balance Sheet Details - Inventory (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/BalanceSheetDetailsInventoryDetails</Role>
      <ShortName>Balance Sheet Details - Inventory (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>37</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R38.htm</HtmlFileName>
      <LongName>0000038 - Disclosure - Balance Sheet Details - Schedule of Prepaid and Other Current Assets (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails</Role>
      <ShortName>Balance Sheet Details - Schedule of Prepaid and Other Current Assets (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>38</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R39.htm</HtmlFileName>
      <LongName>0000039 - Disclosure - Balance Sheet Details - Property and Equipment, net (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails</Role>
      <ShortName>Balance Sheet Details - Property and Equipment, net (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>39</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R40.htm</HtmlFileName>
      <LongName>0000040 - Disclosure - Balance Sheet Details - Intangible Asset Acquisition (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails</Role>
      <ShortName>Balance Sheet Details - Intangible Asset Acquisition (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>40</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R41.htm</HtmlFileName>
      <LongName>0000041 - Disclosure - Balance Sheet Details - Accrued Liabilities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails</Role>
      <ShortName>Balance Sheet Details - Accrued Liabilities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>41</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R42.htm</HtmlFileName>
      <LongName>0000042 - Disclosure - Balance Sheet Details - Product Warranty Activity (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/BalanceSheetDetailsProductWarrantyActivityDetails</Role>
      <ShortName>Balance Sheet Details - Product Warranty Activity (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>42</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R43.htm</HtmlFileName>
      <LongName>0000043 - Disclosure - Balance Sheet Details - Restructuring (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails</Role>
      <ShortName>Balance Sheet Details - Restructuring (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>43</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R44.htm</HtmlFileName>
      <LongName>0000044 - Disclosure - Commitments and Contingencies - Operating Lease (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails</Role>
      <ShortName>Commitments and Contingencies - Operating Lease (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>44</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R45.htm</HtmlFileName>
      <LongName>0000045 - Disclosure - Commitments and Contingencies - Sublease (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails</Role>
      <ShortName>Commitments and Contingencies - Sublease (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>45</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R46.htm</HtmlFileName>
      <LongName>0000046 - Disclosure - Commitments and Contingencies - Operating Lease Liability (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseLiabilityDetails</Role>
      <ShortName>Commitments and Contingencies - Operating Lease Liability (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>46</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R47.htm</HtmlFileName>
      <LongName>0000047 - Disclosure - Commitments and Contingencies - Textual (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/CommitmentsandContingenciesTextualDetails</Role>
      <ShortName>Commitments and Contingencies - Textual (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>47</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R48.htm</HtmlFileName>
      <LongName>0000048 - Disclosure - Stockholders' Equity - Stock Offering, Treasury Stock Retirement, Preferred Stock and Common Stock (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails</Role>
      <ShortName>Stockholders' Equity - Stock Offering, Treasury Stock Retirement, Preferred Stock and Common Stock (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>48</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R49.htm</HtmlFileName>
      <LongName>0000049 - Disclosure - Stockholders' Equity - Stock Repurchase Program (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/StockholdersEquityStockRepurchaseProgramDetails</Role>
      <ShortName>Stockholders' Equity - Stock Repurchase Program (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>49</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R50.htm</HtmlFileName>
      <LongName>0000050 - Disclosure - Stockholders' Equity - Equity Incentive Plans (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails</Role>
      <ShortName>Stockholders' Equity - Equity Incentive Plans (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>50</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R51.htm</HtmlFileName>
      <LongName>0000051 - Disclosure - Stockholders' Equity - Stock Options Activity (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails</Role>
      <ShortName>Stockholders' Equity - Stock Options Activity (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>51</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R52.htm</HtmlFileName>
      <LongName>0000052 - Disclosure - Stockholders' Equity - Fair Value of Awards Granted (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails</Role>
      <ShortName>Stockholders' Equity - Fair Value of Awards Granted (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>52</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R53.htm</HtmlFileName>
      <LongName>0000053 - Disclosure - Stockholders' Equity - Stock-Based Compensation Expense (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails</Role>
      <ShortName>Stockholders' Equity - Stock-Based Compensation Expense (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>53</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R54.htm</HtmlFileName>
      <LongName>0000054 - Disclosure - Stockholders' Equity - ESPP (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/StockholdersEquityESPPDetails</Role>
      <ShortName>Stockholders' Equity - ESPP (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>54</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R55.htm</HtmlFileName>
      <LongName>0000055 - Disclosure - Stockholders' Equity - Assumptions (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/StockholdersEquityAssumptionsDetails</Role>
      <ShortName>Stockholders' Equity - Assumptions (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>55</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R56.htm</HtmlFileName>
      <LongName>0000056 - Disclosure - Stockholders' Equity - Unrecognized Stock-based Compensation Expenses (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails</Role>
      <ShortName>Stockholders' Equity - Unrecognized Stock-based Compensation Expenses (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>56</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R57.htm</HtmlFileName>
      <LongName>0000057 - Disclosure - Stockholders' Equity - Shares Reserved For Future Issuance (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails</Role>
      <ShortName>Stockholders' Equity - Shares Reserved For Future Issuance (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>57</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R58.htm</HtmlFileName>
      <LongName>0000058 - Disclosure - Employee Benefit Plan (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/EmployeeBenefitPlanDetails</Role>
      <ShortName>Employee Benefit Plan (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.calix.com/role/EmployeeBenefitPlan</ParentRole>
      <Position>58</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R59.htm</HtmlFileName>
      <LongName>0000059 - Disclosure - Accumulated Other Comprehensive Loss (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails</Role>
      <ShortName>Accumulated Other Comprehensive Loss (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.calix.com/role/AccumulatedOtherComprehensiveLossTables</ParentRole>
      <Position>59</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R60.htm</HtmlFileName>
      <LongName>0000060 - Disclosure - Income Taxes - Loss before Provision for Income Taxes (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails</Role>
      <ShortName>Income Taxes - Loss before Provision for Income Taxes (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>60</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R61.htm</HtmlFileName>
      <LongName>0000061 - Disclosure - Income Taxes - Components of Income Tax Provision (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails</Role>
      <ShortName>Income Taxes - Components of Income Tax Provision (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>61</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R62.htm</HtmlFileName>
      <LongName>0000062 - Disclosure - Income Taxes - Income Tax Rate Reconciliation (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails</Role>
      <ShortName>Income Taxes - Income Tax Rate Reconciliation (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>62</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R63.htm</HtmlFileName>
      <LongName>0000063 - Disclosure - Income Taxes - Components of Deferred Tax Assets and Liabilities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails</Role>
      <ShortName>Income Taxes - Components of Deferred Tax Assets and Liabilities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>63</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R64.htm</HtmlFileName>
      <LongName>0000064 - Disclosure - Income Taxes - Unrecognized Tax Benefits Activity (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/IncomeTaxesUnrecognizedTaxBenefitsActivityDetails</Role>
      <ShortName>Income Taxes - Unrecognized Tax Benefits Activity (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>64</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R65.htm</HtmlFileName>
      <LongName>0000065 - Disclosure - Income Taxes - Textual (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/IncomeTaxesTextualDetails</Role>
      <ShortName>Income Taxes - Textual (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>65</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R66.htm</HtmlFileName>
      <LongName>0000066 - Disclosure - Net Income Per Common Share - Basic and Diluted Shares Calculation (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails</Role>
      <ShortName>Net Income Per Common Share - Basic and Diluted Shares Calculation (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>66</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R67.htm</HtmlFileName>
      <LongName>0000067 - Disclosure - Revenue from Contracts with Customers - Revenue by Geographic Region (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails</Role>
      <ShortName>Revenue from Contracts with Customers - Revenue by Geographic Region (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>67</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R68.htm</HtmlFileName>
      <LongName>0000068 - Disclosure - Revenue from Contracts with Customers - Property and Equipment by Geographic Region (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails</Role>
      <ShortName>Revenue from Contracts with Customers - Property and Equipment by Geographic Region (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>68</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R69.htm</HtmlFileName>
      <LongName>0000069 - Disclosure - Revenue from Contracts with Customers - Contract Costs (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/RevenuefromContractswithCustomersContractCostsDetails</Role>
      <ShortName>Revenue from Contracts with Customers - Contract Costs (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>69</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R70.htm</HtmlFileName>
      <LongName>0000070 - Disclosure - Revenue from Contracts with Customers - Performance Obligation (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails</Role>
      <ShortName>Revenue from Contracts with Customers - Performance Obligation (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>70</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R71.htm</HtmlFileName>
      <LongName>0000071 - Disclosure - Revenue from Contracts with Customers - Contract Assets and Liabilities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/RevenuefromContractswithCustomersContractAssetsandLiabilitiesDetails</Role>
      <ShortName>Revenue from Contracts with Customers - Contract Assets and Liabilities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>71</Position>
    </Report>
    <Report instance="calx-20221231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R72.htm</HtmlFileName>
      <LongName>0000072 - Disclosure - Revenue from Contracts with Customers - Concentration Risk (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails</Role>
      <ShortName>Revenue from Contracts with Customers - Concentration Risk (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>72</Position>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <LongName>All Reports</LongName>
      <ReportType>Book</ReportType>
      <ShortName>All Reports</ShortName>
    </Report>
  </MyReports>
  <Logs>
    <Log type="Warning">[ix-0514-Hidden-Fact-Eligible-For-Transform] WARN: 3 fact(s) appearing in ix:hidden were eligible for transformation: calx:ProductWarrantyPeriod, us-gaap:PropertyPlantAndEquipmentUsefulLife -  calx-20221231.htm 4</Log>
  </Logs>
  <InputFiles>
    <File doctype="10-K" original="calx-20221231.htm">calx-20221231.htm</File>
    <File>calx-20221231.xsd</File>
    <File>calx-20221231_cal.xml</File>
    <File>calx-20221231_def.xml</File>
    <File>calx-20221231_lab.xml</File>
    <File>calx-20221231_pre.xml</File>
    <File>calx-20221231xex211subsidi.htm</File>
    <File>calx-20221231xex231kpmgcon.htm</File>
    <File>calx-20221231xex311.htm</File>
    <File>calx-20221231xex312.htm</File>
    <File>calx-20221231xex321.htm</File>
  </InputFiles>
  <SupplementalFiles>
    <File>calx-20221231_g1.jpg</File>
  </SupplementalFiles>
  <BaseTaxonomies>
    <BaseTaxonomy items="902">http://fasb.org/us-gaap/2022</BaseTaxonomy>
    <BaseTaxonomy items="37">http://xbrl.sec.gov/dei/2022</BaseTaxonomy>
  </BaseTaxonomies>
  <HasPresentationLinkbase>true</HasPresentationLinkbase>
  <HasCalculationLinkbase>true</HasCalculationLinkbase>
</FilingSummary>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>JSON
<SEQUENCE>92
<FILENAME>MetaLinks.json
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
{
 "instance": {
  "calx-20221231.htm": {
   "axisCustom": 0,
   "axisStandard": 25,
   "baseTaxonomies": {
    "http://fasb.org/us-gaap/2022": 902,
    "http://xbrl.sec.gov/dei/2022": 37
   },
   "contextCount": 246,
   "dts": {
    "calculationLink": {
     "local": [
      "calx-20221231_cal.xml"
     ]
    },
    "definitionLink": {
     "local": [
      "calx-20221231_def.xml"
     ]
    },
    "inline": {
     "local": [
      "calx-20221231.htm"
     ]
    },
    "labelLink": {
     "local": [
      "calx-20221231_lab.xml"
     ]
    },
    "presentationLink": {
     "local": [
      "calx-20221231_pre.xml"
     ]
    },
    "schema": {
     "local": [
      "calx-20221231.xsd"
     ],
     "remote": [
      "http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xl-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xlink-2003-12-31.xsd",
      "http://www.xbrl.org/2005/xbrldt-2005.xsd",
      "http://www.xbrl.org/2006/ref-2006-02-27.xsd",
      "http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/net-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/reference-2009-12-16.xsd",
      "https://www.xbrl.org/2020/extensible-enumerations-2.0.xsd",
      "https://www.xbrl.org/dtr/type/2020-01-21/types.xsd",
      "https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd",
      "https://xbrl.fasb.org/srt/2022/elts/srt-roles-2022.xsd",
      "https://xbrl.fasb.org/srt/2022/elts/srt-types-2022.xsd",
      "https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd",
      "https://xbrl.fasb.org/us-gaap/2022/elts/us-roles-2022.xsd",
      "https://xbrl.fasb.org/us-gaap/2022/elts/us-types-2022.xsd",
      "https://xbrl.sec.gov/country/2022/country-2022.xsd",
      "https://xbrl.sec.gov/dei/2022/dei-2022.xsd"
     ]
    }
   },
   "elementCount": 582,
   "entityCount": 1,
   "hidden": {
    "http://fasb.org/us-gaap/2022": 4,
    "http://www.calix.com/20221231": 2,
    "http://xbrl.sec.gov/dei/2022": 4,
    "total": 10
   },
   "keyCustom": 43,
   "keyStandard": 338,
   "memberCustom": 23,
   "memberStandard": 47,
   "nsprefix": "calx",
   "nsuri": "http://www.calix.com/20221231",
   "report": {
    "R1": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:DocumentType",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "document",
     "isDefault": "true",
     "longName": "0000001 - Document - Cover",
     "menuCat": "Cover",
     "order": "1",
     "role": "http://www.calix.com/role/Cover",
     "shortName": "Cover",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:DocumentType",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R10": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueDisclosuresTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000010 - Disclosure - Fair Value Measurements",
     "menuCat": "Notes",
     "order": "10",
     "role": "http://www.calix.com/role/FairValueMeasurements",
     "shortName": "Fair Value Measurements",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueDisclosuresTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R11": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SupplementalBalanceSheetDisclosuresTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000011 - Disclosure - Balance Sheet Details",
     "menuCat": "Notes",
     "order": "11",
     "role": "http://www.calix.com/role/BalanceSheetDetails",
     "shortName": "Balance Sheet Details",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SupplementalBalanceSheetDisclosuresTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R12": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000012 - Disclosure - Commitments and Contingencies",
     "menuCat": "Notes",
     "order": "12",
     "role": "http://www.calix.com/role/CommitmentsandContingencies",
     "shortName": "Commitments and Contingencies",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R13": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareholdersEquityAndShareBasedPaymentsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000013 - Disclosure - Stockholders' Equity",
     "menuCat": "Notes",
     "order": "13",
     "role": "http://www.calix.com/role/StockholdersEquity",
     "shortName": "Stockholders' Equity",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareholdersEquityAndShareBasedPaymentsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R14": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CompensationAndEmployeeBenefitPlansTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000014 - Disclosure - Employee Benefit Plan",
     "menuCat": "Notes",
     "order": "14",
     "role": "http://www.calix.com/role/EmployeeBenefitPlan",
     "shortName": "Employee Benefit Plan",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CompensationAndEmployeeBenefitPlansTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R15": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ComprehensiveIncomeNoteTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000015 - Disclosure - Accumulated Other Comprehensive Loss",
     "menuCat": "Notes",
     "order": "15",
     "role": "http://www.calix.com/role/AccumulatedOtherComprehensiveLoss",
     "shortName": "Accumulated Other Comprehensive Loss",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ComprehensiveIncomeNoteTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R16": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000016 - Disclosure - Income Taxes",
     "menuCat": "Notes",
     "order": "16",
     "role": "http://www.calix.com/role/IncomeTaxes",
     "shortName": "Income Taxes",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R17": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000017 - Disclosure - Net Income Per Common Share",
     "menuCat": "Notes",
     "order": "17",
     "role": "http://www.calix.com/role/NetIncomePerCommonShare",
     "shortName": "Net Income Per Common Share",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R18": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000018 - Disclosure - Revenue from Contracts with Customers",
     "menuCat": "Notes",
     "order": "18",
     "role": "http://www.calix.com/role/RevenuefromContractswithCustomers",
     "shortName": "Revenue from Contracts with Customers",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R19": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BasisOfAccountingPolicyPolicyTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000019 - Disclosure - Description of Business and Significant Accounting Policies (Policies)",
     "menuCat": "Policies",
     "order": "19",
     "role": "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies",
     "shortName": "Description of Business and Significant Accounting Policies (Policies)",
     "subGroupType": "policies",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BasisOfAccountingPolicyPolicyTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R2": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:AuditorName",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "document",
     "isDefault": "false",
     "longName": "0000002 - Document - Audit Information",
     "menuCat": "Cover",
     "order": "2",
     "role": "http://www.calix.com/role/AuditInformation",
     "shortName": "Audit Information",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:AuditorName",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R20": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfCashAndCashEquivalentsTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000020 - Disclosure - Cash, Cash Equivalents and Marketable Securities (Tables)",
     "menuCat": "Tables",
     "order": "20",
     "role": "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesTables",
     "shortName": "Cash, Cash Equivalents and Marketable Securities (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfCashAndCashEquivalentsTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R21": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000021 - Disclosure - Fair Value Measurements (Tables)",
     "menuCat": "Tables",
     "order": "21",
     "role": "http://www.calix.com/role/FairValueMeasurementsTables",
     "shortName": "Fair Value Measurements (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R22": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000022 - Disclosure - Balance Sheet Details (Tables)",
     "menuCat": "Tables",
     "order": "22",
     "role": "http://www.calix.com/role/BalanceSheetDetailsTables",
     "shortName": "Balance Sheet Details (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R23": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000023 - Disclosure - Commitments and Contingencies (Tables)",
     "menuCat": "Tables",
     "order": "23",
     "role": "http://www.calix.com/role/CommitmentsandContingenciesTables",
     "shortName": "Commitments and Contingencies (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R24": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000024 - Disclosure - Stockholders' Equity (Tables)",
     "menuCat": "Tables",
     "order": "24",
     "role": "http://www.calix.com/role/StockholdersEquityTables",
     "shortName": "Stockholders' Equity (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R25": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000025 - Disclosure - Accumulated Other Comprehensive Loss (Tables)",
     "menuCat": "Tables",
     "order": "25",
     "role": "http://www.calix.com/role/AccumulatedOtherComprehensiveLossTables",
     "shortName": "Accumulated Other Comprehensive Loss (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R26": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000026 - Disclosure - Income Taxes (Tables)",
     "menuCat": "Tables",
     "order": "26",
     "role": "http://www.calix.com/role/IncomeTaxesTables",
     "shortName": "Income Taxes (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R27": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000027 - Disclosure - Net Income Per Common Share (Tables)",
     "menuCat": "Tables",
     "order": "27",
     "role": "http://www.calix.com/role/NetIncomePerCommonShareTables",
     "shortName": "Net Income Per Common Share (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R28": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000028 - Disclosure - Revenue from Contracts with Customers (Tables)",
     "menuCat": "Tables",
     "order": "28",
     "role": "http://www.calix.com/role/RevenuefromContractswithCustomersTables",
     "shortName": "Revenue from Contracts with Customers (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R29": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CapitalizedContractCostAmortizationPeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000029 - Disclosure - Description of Business and Significant Accounting Policies - Contract Costs (Details)",
     "menuCat": "Details",
     "order": "29",
     "role": "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesContractCostsDetails",
     "shortName": "Description of Business and Significant Accounting Policies - Contract Costs (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CapitalizedContractCostAmortizationPeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R3": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "0000003 - Statement - Consolidated Balance Sheets",
     "menuCat": "Statements",
     "order": "3",
     "role": "http://www.calix.com/role/ConsolidatedBalanceSheets",
     "shortName": "Consolidated Balance Sheets",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:AssetsCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R30": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:PropertyPlantAndEquipmentPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i7ad4ad7c154840f4bae9ab60b925baa2_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentUsefulLife",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000030 - Disclosure - Description of Business and Significant Accounting Policies - Useful Lives of Property and Equipment (Details)",
     "menuCat": "Details",
     "order": "30",
     "role": "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails",
     "shortName": "Description of Business and Significant Accounting Policies - Useful Lives of Property and Equipment (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:PropertyPlantAndEquipmentPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i7ad4ad7c154840f4bae9ab60b925baa2_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentUsefulLife",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R31": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:GoodwillImpairmentLoss",
       "us-gaap:GoodwillImpairmentLoss",
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:GoodwillImpairmentLoss",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000031 - Disclosure - Description of Business and Significant Accounting Policies - Additional Information (Detail)",
     "menuCat": "Details",
     "order": "31",
     "role": "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail",
     "shortName": "Description of Business and Significant Accounting Policies - Additional Information (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:GoodwillImpairmentLoss",
       "us-gaap:GoodwillImpairmentLoss",
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:GoodwillImpairmentLoss",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R32": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000032 - Disclosure - Cash, Cash Equivalents and Marketable Securities (Details)",
     "menuCat": "Details",
     "order": "32",
     "role": "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
     "shortName": "Cash, Cash Equivalents and Marketable Securities (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfCashAndCashEquivalentsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "calx:CashCashEquivalentsAndMarketableSecurities",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R33": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000033 - Disclosure - Cash, Cash Equivalents, and Marketable Securities - Schedule of Marketable Securities (Details)",
     "menuCat": "Details",
     "order": "33",
     "role": "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails",
     "shortName": "Cash, Cash Equivalents, and Marketable Securities - Schedule of Marketable Securities (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "ic3ce6d215fd045b89989818cac3c19c7_I20221231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R34": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000034 - Disclosure - Fair Value Measurements (Details)",
     "menuCat": "Details",
     "order": "34",
     "role": "http://www.calix.com/role/FairValueMeasurementsDetails",
     "shortName": "Fair Value Measurements (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "ibcbd3e4469a449f7b3a0e404714fbb82_I20221231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:AssetsFairValueDisclosure",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R35": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AccountsReceivableGrossCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000035 - Disclosure - Balance Sheet Details - Accounts Receivable (Details)",
     "menuCat": "Details",
     "order": "35",
     "role": "http://www.calix.com/role/BalanceSheetDetailsAccountsReceivableDetails",
     "shortName": "Balance Sheet Details - Accounts Receivable (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AccountsReceivableGrossCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R36": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "calx:ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "ieb051ab610094bc982d7f8bddacb801c_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ValuationAllowancesAndReservesBalance",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000036 - Disclosure - Balance Sheet Details - Allowance and Product Return Reserve (Details)",
     "menuCat": "Details",
     "order": "36",
     "role": "http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails",
     "shortName": "Balance Sheet Details - Allowance and Product Return Reserve (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "calx:ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i87fd0a9a32974808b514ae0e6b4977f2_I20191231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:ValuationAllowancesAndReservesBalance",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R37": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryRawMaterialsNetOfReserves",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000037 - Disclosure - Balance Sheet Details - Inventory (Details)",
     "menuCat": "Details",
     "order": "37",
     "role": "http://www.calix.com/role/BalanceSheetDetailsInventoryDetails",
     "shortName": "Balance Sheet Details - Inventory (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryRawMaterialsNetOfReserves",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R38": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DepositsAssetsCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000038 - Disclosure - Balance Sheet Details - Schedule of Prepaid and Other Current Assets (Details)",
     "menuCat": "Details",
     "order": "38",
     "role": "http://www.calix.com/role/BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails",
     "shortName": "Balance Sheet Details - Schedule of Prepaid and Other Current Assets (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DepositsAssetsCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R39": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000039 - Disclosure - Balance Sheet Details - Property and Equipment, net (Details)",
     "menuCat": "Details",
     "order": "39",
     "role": "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails",
     "shortName": "Balance Sheet Details - Property and Equipment, net (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R4": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:PreferredStockParOrStatedValuePerShare",
       "span",
       "div",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PreferredStockParOrStatedValuePerShare",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usdPerShare",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "0000004 - Statement - Consolidated Balance Sheets (Parenthetical)",
     "menuCat": "Statements",
     "order": "4",
     "role": "http://www.calix.com/role/ConsolidatedBalanceSheetsParenthetical",
     "shortName": "Consolidated Balance Sheets (Parenthetical)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:PreferredStockParOrStatedValuePerShare",
       "span",
       "div",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PreferredStockParOrStatedValuePerShare",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usdPerShare",
      "xsiNil": "false"
     }
    },
    "R40": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfOtherAssetsNoncurrentTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IntangibleAssetsNetExcludingGoodwill",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000040 - Disclosure - Balance Sheet Details - Intangible Asset Acquisition (Details)",
     "menuCat": "Details",
     "order": "40",
     "role": "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails",
     "shortName": "Balance Sheet Details - Intangible Asset Acquisition (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfOtherAssetsNoncurrentTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IntangibleAssetsNetExcludingGoodwill",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R41": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EmployeeRelatedLiabilitiesCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000041 - Disclosure - Balance Sheet Details - Accrued Liabilities (Details)",
     "menuCat": "Details",
     "order": "41",
     "role": "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails",
     "shortName": "Balance Sheet Details - Accrued Liabilities (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EmployeeRelatedLiabilitiesCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R42": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3cfa8e15f5fa4b728b7bf0524780329d_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ProductWarrantyAccrual",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000042 - Disclosure - Balance Sheet Details - Product Warranty Activity (Details)",
     "menuCat": "Details",
     "order": "42",
     "role": "http://www.calix.com/role/BalanceSheetDetailsProductWarrantyActivityDetails",
     "shortName": "Balance Sheet Details - Product Warranty Activity (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "ibe3ffb6b029948b89bd038665fa57d44_I20191231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:ProductWarrantyAccrual",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R43": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RestructuringCharges",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000043 - Disclosure - Balance Sheet Details - Restructuring (Details)",
     "menuCat": "Details",
     "order": "43",
     "role": "http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails",
     "shortName": "Balance Sheet Details - Restructuring (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "INF",
      "lang": "en-US",
      "name": "us-gaap:RestructuringReserve",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R44": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "ix:continuation",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000044 - Disclosure - Commitments and Contingencies - Operating Lease (Details)",
     "menuCat": "Details",
     "order": "44",
     "role": "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails",
     "shortName": "Commitments and Contingencies - Operating Lease (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "ix:continuation",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R45": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "id212028f7d3447bc991b7b183b10250a_I20211130",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LessorOperatingLeaseTermOfContract",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000045 - Disclosure - Commitments and Contingencies - Sublease (Details)",
     "menuCat": "Details",
     "order": "45",
     "role": "http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails",
     "shortName": "Commitments and Contingencies - Sublease (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "id212028f7d3447bc991b7b183b10250a_I20211130",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LessorOperatingLeaseTermOfContract",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R46": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "calx:LesseeOperatingLeaseLiabilityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OperatingLeaseLiabilityCurrent",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000046 - Disclosure - Commitments and Contingencies - Operating Lease Liability (Details)",
     "menuCat": "Details",
     "order": "46",
     "role": "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseLiabilityDetails",
     "shortName": "Commitments and Contingencies - Operating Lease Liability (Details)",
     "subGroupType": "details",
     "uniqueAnchor": null
    },
    "R47": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "ix:continuation",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000047 - Disclosure - Commitments and Contingencies - Textual (Details)",
     "menuCat": "Details",
     "order": "47",
     "role": "http://www.calix.com/role/CommitmentsandContingenciesTextualDetails",
     "shortName": "Commitments and Contingencies - Textual (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "3",
      "lang": "en-US",
      "name": "us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     }
    },
    "R48": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PreferredStockSharesAuthorized",
      "reportCount": 1,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000048 - Disclosure - Stockholders' Equity - Stock Offering, Treasury Stock Retirement, Preferred Stock and Common Stock (Details)",
     "menuCat": "Details",
     "order": "48",
     "role": "http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails",
     "shortName": "Stockholders' Equity - Stock Offering, Treasury Stock Retirement, Preferred Stock and Common Stock (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "INF",
      "lang": "en-US",
      "name": "us-gaap:CommonStockDividendsPerShareDeclared",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usdPerShare",
      "xsiNil": "false"
     }
    },
    "R49": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i505f47a2e1ed4f3195b453dfbe6a64f4_D20220701-20220731",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:StockRepurchaseProgramPeriodInForce1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000049 - Disclosure - Stockholders' Equity - Stock Repurchase Program (Details)",
     "menuCat": "Details",
     "order": "49",
     "role": "http://www.calix.com/role/StockholdersEquityStockRepurchaseProgramDetails",
     "shortName": "Stockholders' Equity - Stock Repurchase Program (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i505f47a2e1ed4f3195b453dfbe6a64f4_D20220701-20220731",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:StockRepurchaseProgramPeriodInForce1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R5": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "0000005 - Statement - Consolidated Statements of Comprehensive Income (Loss)",
     "menuCat": "Statements",
     "order": "5",
     "role": "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss",
     "shortName": "Consolidated Statements of Comprehensive Income (Loss)",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:CostOfGoodsAndServicesSold",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R50": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross",
      "reportCount": 1,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000050 - Disclosure - Stockholders' Equity - Equity Incentive Plans (Details)",
     "menuCat": "Details",
     "order": "50",
     "role": "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails",
     "shortName": "Stockholders' Equity - Equity Incentive Plans (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3cbfffa9694a42a389d948ddc37f1e20_I20221231",
      "decimals": "-5",
      "lang": "en-US",
      "name": "calx:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R51": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3cfa8e15f5fa4b728b7bf0524780329d_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
      "reportCount": 1,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000051 - Disclosure - Stockholders' Equity - Stock Options Activity (Details)",
     "menuCat": "Details",
     "order": "51",
     "role": "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails",
     "shortName": "Stockholders' Equity - Stock Options Activity (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R52": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "calx:ScheduleOfGrantDateFairValuesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "2",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
      "reportCount": 1,
      "unitRef": "usdPerShare",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000052 - Disclosure - Stockholders' Equity - Fair Value of Awards Granted (Details)",
     "menuCat": "Details",
     "order": "52",
     "role": "http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails",
     "shortName": "Stockholders' Equity - Fair Value of Awards Granted (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "calx:ScheduleOfGrantDateFairValuesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231",
      "decimals": "2",
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usdPerShare",
      "xsiNil": "false"
     }
    },
    "R53": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000053 - Disclosure - Stockholders' Equity - Stock-Based Compensation Expense (Details)",
     "menuCat": "Details",
     "order": "53",
     "role": "http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails",
     "shortName": "Stockholders' Equity - Stock-Based Compensation Expense (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R54": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i9bba5a4e0da24eee8fe78a1ed61d8082_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1",
      "reportCount": 1,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000054 - Disclosure - Stockholders' Equity - ESPP (Details)",
     "menuCat": "Details",
     "order": "54",
     "role": "http://www.calix.com/role/StockholdersEquityESPPDetails",
     "shortName": "Stockholders' Equity - ESPP (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i5b465428849c4e708a3b9d04506880c1_D20200501-20200531",
      "decimals": "INF",
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R55": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231",
      "decimals": "2",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000055 - Disclosure - Stockholders' Equity - Assumptions (Details)",
     "menuCat": "Details",
     "order": "55",
     "role": "http://www.calix.com/role/StockholdersEquityAssumptionsDetails",
     "shortName": "Stockholders' Equity - Assumptions (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "if9248f026f6d479a9a7d8c51a9f4b8e4_D20220101-20221231",
      "decimals": "2",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     }
    },
    "R56": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-5",
      "first": true,
      "lang": "en-US",
      "name": "calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000056 - Disclosure - Stockholders' Equity - Unrecognized Stock-based Compensation Expenses (Details)",
     "menuCat": "Details",
     "order": "56",
     "role": "http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails",
     "shortName": "Stockholders' Equity - Unrecognized Stock-based Compensation Expenses (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-5",
      "first": true,
      "lang": "en-US",
      "name": "calx:EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R57": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
      "reportCount": 1,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000057 - Disclosure - Stockholders' Equity - Shares Reserved For Future Issuance (Details)",
     "menuCat": "Details",
     "order": "57",
     "role": "http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails",
     "shortName": "Stockholders' Equity - Shares Reserved For Future Issuance (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "calx:SharesReservedForFutureIssuanceTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:CommonStockCapitalSharesReservedForFutureIssuance",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R58": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-5",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DefinedContributionPlanCostRecognized",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000058 - Disclosure - Employee Benefit Plan (Details)",
     "menuCat": "Details",
     "order": "58",
     "role": "http://www.calix.com/role/EmployeeBenefitPlanDetails",
     "shortName": "Employee Benefit Plan (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-5",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DefinedContributionPlanCostRecognized",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R59": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3cfa8e15f5fa4b728b7bf0524780329d_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:StockholdersEquity",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000059 - Disclosure - Accumulated Other Comprehensive Loss (Details)",
     "menuCat": "Details",
     "order": "59",
     "role": "http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails",
     "shortName": "Accumulated Other Comprehensive Loss (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i12575da023634f6cb1d81df6e92df5a7_D20220101-20221231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R6": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "ie82c4a028e2f46f49e00eb16a6221418_I20191231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CommonStockSharesOutstanding",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "0000006 - Statement - Consolidated Statements of Stockholders' Equity",
     "menuCat": "Statements",
     "order": "6",
     "role": "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity",
     "shortName": "Consolidated Statements of Stockholders' Equity",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "ie82c4a028e2f46f49e00eb16a6221418_I20191231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CommonStockSharesOutstanding",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R60": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000060 - Disclosure - Income Taxes - Loss before Provision for Income Taxes (Details)",
     "menuCat": "Details",
     "order": "60",
     "role": "http://www.calix.com/role/IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails",
     "shortName": "Income Taxes - Loss before Provision for Income Taxes (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R61": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CurrentFederalTaxExpenseBenefit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000061 - Disclosure - Income Taxes - Components of Income Tax Provision (Details)",
     "menuCat": "Details",
     "order": "61",
     "role": "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails",
     "shortName": "Income Taxes - Components of Income Tax Provision (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CurrentFederalTaxExpenseBenefit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R62": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000062 - Disclosure - Income Taxes - Income Tax Rate Reconciliation (Details)",
     "menuCat": "Details",
     "order": "62",
     "role": "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails",
     "shortName": "Income Taxes - Income Tax Rate Reconciliation (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     }
    },
    "R63": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DeferredTaxAssetsOperatingLossCarryforwards",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000063 - Disclosure - Income Taxes - Components of Deferred Tax Assets and Liabilities (Details)",
     "menuCat": "Details",
     "order": "63",
     "role": "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails",
     "shortName": "Income Taxes - Components of Deferred Tax Assets and Liabilities (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DeferredTaxAssetsOperatingLossCarryforwards",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R64": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:SummaryOfIncomeTaxContingenciesTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3cfa8e15f5fa4b728b7bf0524780329d_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:UnrecognizedTaxBenefits",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000064 - Disclosure - Income Taxes - Unrecognized Tax Benefits Activity (Details)",
     "menuCat": "Details",
     "order": "64",
     "role": "http://www.calix.com/role/IncomeTaxesUnrecognizedTaxBenefitsActivityDetails",
     "shortName": "Income Taxes - Unrecognized Tax Benefits Activity (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:SummaryOfIncomeTaxContingenciesTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R65": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-5",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000065 - Disclosure - Income Taxes - Textual (Details)",
     "menuCat": "Details",
     "order": "65",
     "role": "http://www.calix.com/role/IncomeTaxesTextualDetails",
     "shortName": "Income Taxes - Textual (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-5",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R66": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:NetIncomeLoss",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000066 - Disclosure - Net Income Per Common Share - Basic and Diluted Shares Calculation (Details)",
     "menuCat": "Details",
     "order": "66",
     "role": "http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails",
     "shortName": "Net Income Per Common Share - Basic and Diluted Shares Calculation (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R67": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000067 - Disclosure - Revenue from Contracts with Customers - Revenue by Geographic Region (Details)",
     "menuCat": "Details",
     "order": "67",
     "role": "http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails",
     "shortName": "Revenue from Contracts with Customers - Revenue by Geographic Region (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "ieae5dffc94804c0fb48da0faaee7d475_D20220101-20221231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R68": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentNet",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000068 - Disclosure - Revenue from Contracts with Customers - Property and Equipment by Geographic Region (Details)",
     "menuCat": "Details",
     "order": "68",
     "role": "http://www.calix.com/role/RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails",
     "shortName": "Revenue from Contracts with Customers - Property and Equipment by Geographic Region (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "ia7372260ff5944fbbd414f122dbb6a4e_I20221231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentNet",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R69": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-5",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CapitalizedContractCostGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000069 - Disclosure - Revenue from Contracts with Customers - Contract Costs (Details)",
     "menuCat": "Details",
     "order": "69",
     "role": "http://www.calix.com/role/RevenuefromContractswithCustomersContractCostsDetails",
     "shortName": "Revenue from Contracts with Customers - Contract Costs (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-5",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CapitalizedContractCostGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R7": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:NetIncomeLoss",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "0000007 - Statement - Consolidated Statements of Cash Flows",
     "menuCat": "Statements",
     "order": "7",
     "role": "http://www.calix.com/role/ConsolidatedStatementsofCashFlows",
     "shortName": "Consolidated Statements of Cash Flows",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:DeferredIncomeTaxesAndTaxCredits",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R70": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-5",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueRemainingPerformanceObligation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000070 - Disclosure - Revenue from Contracts with Customers - Performance Obligation (Details)",
     "menuCat": "Details",
     "order": "70",
     "role": "http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails",
     "shortName": "Revenue from Contracts with Customers - Performance Obligation (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-5",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueRemainingPerformanceObligation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R71": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-5",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ContractWithCustomerAssetNet",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000071 - Disclosure - Revenue from Contracts with Customers - Contract Assets and Liabilities (Details)",
     "menuCat": "Details",
     "order": "71",
     "role": "http://www.calix.com/role/RevenuefromContractswithCustomersContractAssetsandLiabilitiesDetails",
     "shortName": "Revenue from Contracts with Customers - Contract Assets and Liabilities (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i18ca6c2cd59045dcb331174af35d6d74_I20221231",
      "decimals": "-5",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ContractWithCustomerAssetNet",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R72": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i04be09c8797d413a93af8d5d08358be6_D20210101-20211231",
      "decimals": "2",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ConcentrationRiskPercentage1",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000072 - Disclosure - Revenue from Contracts with Customers - Concentration Risk (Details)",
     "menuCat": "Details",
     "order": "72",
     "role": "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails",
     "shortName": "Revenue from Contracts with Customers - Concentration Risk (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i04be09c8797d413a93af8d5d08358be6_D20210101-20211231",
      "decimals": "2",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ConcentrationRiskPercentage1",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     }
    },
    "R8": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BusinessDescriptionAndAccountingPoliciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000008 - Disclosure - Description of Business and Significant Accounting Policies",
     "menuCat": "Notes",
     "order": "8",
     "role": "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPolicies",
     "shortName": "Description of Business and Significant Accounting Policies",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BusinessDescriptionAndAccountingPoliciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R9": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CashCashEquivalentsAndMarketableSecuritiesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "0000009 - Disclosure - Cash, Cash Equivalents and Marketable Securities",
     "menuCat": "Notes",
     "order": "9",
     "role": "http://www.calix.com/role/CashCashEquivalentsandMarketableSecurities",
     "shortName": "Cash, Cash Equivalents and Marketable Securities",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "calx-20221231.htm",
      "contextRef": "i3e65b62e096845678e29e95530315bfa_D20220101-20221231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CashCashEquivalentsAndMarketableSecuritiesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    }
   },
   "segmentCount": 74,
   "tag": {
    "calx_A2017NonqualifiedEmployeeStockPurchasePlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "2017 Nonqualified Employee Stock Purchase Plan",
        "label": "2017 Nonqualified Employee Stock Purchase Plan [Member]",
        "terseLabel": "2017 Nonqualified Employee Stock Purchase Plan"
       }
      }
     },
     "localname": "A2017NonqualifiedEmployeeStockPurchasePlanMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails",
      "http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails",
      "http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_A2019EquityIncentiveAwardPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "2019 Equity Incentive Award Plan [Member]",
        "label": "2019 Equity Incentive Award Plan [Member]",
        "terseLabel": "2019 Equity Incentive Award Plan"
       }
      }
     },
     "localname": "A2019EquityIncentiveAwardPlanMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_A2019PlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "2019 Plan",
        "label": "2019 Plan [Member]",
        "terseLabel": "2019 Plan"
       }
      }
     },
     "localname": "A2019PlanMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_A2021PerformanceTargetsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "2021 Performance Targets",
        "label": "2021 Performance Targets [Member]",
        "terseLabel": "2021 Performance Targets"
       }
      }
     },
     "localname": "A2021PerformanceTargetsMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_AccruedBusinessEventsCurrent": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails": {
       "order": 12.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accrued Business Events, Current",
        "label": "Accrued Business Events, Current",
        "terseLabel": "Business events"
       }
      }
     },
     "localname": "AccruedBusinessEventsCurrent",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_AccruedCustomerRebates": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails": {
       "order": 7.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accrued customer rebates.",
        "label": "Accrued Customer Rebates",
        "terseLabel": "Customer advances or rebates"
       }
      }
     },
     "localname": "AccruedCustomerRebates",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_AccruedExcessAndObsoleteInventoryAtContractManufacturer": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails": {
       "order": 6.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accrued excess and obsolete inventory at contract manufacturer.",
        "label": "Accrued Excess and Obsolete Inventory At Contract Manufacturer",
        "terseLabel": "Component inventory held by suppliers",
        "verboseLabel": "Accrued professional and consulting fees"
       }
      }
     },
     "localname": "AccruedExcessAndObsoleteInventoryAtContractManufacturer",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails",
      "http://www.calix.com/role/CommitmentsandContingenciesTextualDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_AccruedFreight": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accrued Freight",
        "label": "Accrued Freight",
        "terseLabel": "Freight"
       }
      }
     },
     "localname": "AccruedFreight",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_AccruedRevenueSharePaymentsCurrent": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails": {
       "order": 9.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accrued Revenue Share Payments, Current",
        "label": "Accrued Revenue Share Payments, Current",
        "terseLabel": "Current portion of revenue-share payments"
       }
      }
     },
     "localname": "AccruedRevenueSharePaymentsCurrent",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "All Platform Future And Work-From-Anywhere Culture Alignment",
        "label": "All Platform Future And Work-From-Anywhere Culture Alignment [Member]",
        "terseLabel": "All Platform Future And Work-From-Anywhere Culture Alignment"
       }
      }
     },
     "localname": "AllPlatformFutureAndWorkFromAnywhereCultureAlignmentMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_AmericasExUSMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Americas Ex U.S.",
        "label": "Americas Ex U.S. [Member]",
        "terseLabel": "Europe"
       }
      }
     },
     "localname": "AmericasExUSMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_AuditInformationAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Audit Information",
        "label": "Audit Information [Abstract]"
       }
      }
     },
     "localname": "AuditInformationAbstract",
     "nsuri": "http://www.calix.com/20221231",
     "xbrltype": "stringItemType"
    },
    "calx_BrazilChinaAndUnitedKingdomMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Brazil, China And United Kingdom",
        "label": "Brazil, China And United Kingdom [Member]",
        "terseLabel": "Brazil, China And United Kingdom"
       }
      }
     },
     "localname": "BrazilChinaAndUnitedKingdomMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_CaliforniaStateMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "California State [Member]",
        "label": "California State [Member]",
        "terseLabel": "California State"
       }
      }
     },
     "localname": "CaliforniaStateMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTextualDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_CashCashEquivalentsAndMarketableSecurities": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Cash, Cash Equivalents, And Marketable Securities",
        "label": "Cash, Cash Equivalents, And Marketable Securities",
        "totalLabel": "Total cash, cash equivalents, and marketable securities"
       }
      }
     },
     "localname": "CashCashEquivalentsAndMarketableSecurities",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for cash and cash equivalents, and for investments in debt and equity securities that have readily determinable fair values (marketable securities).",
        "label": "Cash, Cash Equivalents, and Marketable Securities, Policy [Policy Text Block] [Policy Text Block]",
        "terseLabel": "Cash, Cash Equivalents, and Marketable Securities"
       }
      }
     },
     "localname": "CashCashEquivalentsAndMarketableSecuritiesPolicyPolicyTextBlockPolicyTextBlock",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "calx_ChangeInCapitalExpendituresIncurredButNotYetPaid": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Change In Capital Expenditures Incurred But Not Yet Paid",
        "label": "Change In Capital Expenditures Incurred But Not Yet Paid",
        "terseLabel": "Changes in accounts payable and accrued liabilities related to purchases of property and equipment"
       }
      }
     },
     "localname": "ChangeInCapitalExpendituresIncurredButNotYetPaid",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_ContractWithCustomerAssetExpectedToBeBilledYearOnePercent": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Contract With Customer, Asset, Expected To Be Billed, Year One, Percent",
        "label": "Contract With Customer, Asset, Expected To Be Billed, Year One, Percent",
        "terseLabel": "Contract with customer, asset, expected to be billed, percent"
       }
      }
     },
     "localname": "ContractWithCustomerAssetExpectedToBeBilledYearOnePercent",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersContractAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "calx_ContractWithCustomerAssetPriorPeriodNotRecognized": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Contract With Customer, Asset, Prior Period, Not Recognized",
        "label": "Contract With Customer, Asset, Prior Period, Not Recognized",
        "terseLabel": "Contract with customer, asset, prior period, not recognized"
       }
      }
     },
     "localname": "ContractWithCustomerAssetPriorPeriodNotRecognized",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersContractAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_ContractualTermStockOptions": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Contractual Term, Stock Options",
        "label": "Contractual Term, Stock Options",
        "terseLabel": "Contractual term, stock options"
       }
      }
     },
     "localname": "ContractualTermStockOptions",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "calx_CostOfRevenueProductsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Cost Of Revenue, Products [Member]",
        "label": "Cost Of Revenue, Products [Member]",
        "terseLabel": "Products"
       }
      }
     },
     "localname": "CostOfRevenueProductsMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_CostOfRevenueServicesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Cost Of Revenue, Services [Member]",
        "label": "Cost Of Revenue, Services [Member]",
        "verboseLabel": "Services"
       }
      }
     },
     "localname": "CostOfRevenueServicesMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_CustomerTwoMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Customer Two",
        "label": "Customer Two [Member]",
        "terseLabel": "Customer Two"
       }
      }
     },
     "localname": "CustomerTwoMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails": {
       "order": 6.0,
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Deferred Tax Assets, Deferred Expense, Capitalized Research and Development Costs",
        "label": "Deferred Tax Assets, Deferred Expense, Capitalized Research and Development Costs",
        "terseLabel": "Capitalized R&amp;D"
       }
      }
     },
     "localname": "DeferredTaxAssetsDeferredExpenseCapitalizedResearchAndDevelopmentCosts",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails": {
       "order": 10.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Effective Income Tax Rate Reconciliation, Expiration Of Operating Income (Loss)",
        "label": "Effective Income Tax Rate Reconciliation, Expiration Of Operating Income (Loss)",
        "terseLabel": "Net operating loss expiration / attribute expiration"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationExpirationOfOperatingIncomeLoss",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized In Year Four",
        "label": "Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized In Year Four",
        "terseLabel": "Stock-based compensation expense to be recognized four years after filing"
       }
      }
     },
     "localname": "EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearFour",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized In Year Three",
        "label": "Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized In Year Three",
        "terseLabel": "Stock-based compensation expense to be recognized three years after filing"
       }
      }
     },
     "localname": "EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearThree",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized In Year Two",
        "label": "Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized In Year Two",
        "terseLabel": "Stock-based compensation expense to be recognized two years after filing"
       }
      }
     },
     "localname": "EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedInYearTwo",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized Next Twelve Month",
        "label": "Employee Service Share-based Compensation, Nonvested Awards, Compensation Cost Not yet Recognized, To Be Recognized Next Twelve Month",
        "terseLabel": "Stock-based compensation expense to be recognized in next twelve months"
       }
      }
     },
     "localname": "EmployeeServiceSharebasedCompensationNonvestedAwardsCompensationCostNotyetRecognizedToBeRecognizedNextTwelveMonth",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_EmployeeStockPurchasePlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Employee Stock Purchase Plan",
        "label": "Employee Stock Purchase Plan [Member]",
        "terseLabel": "Employee Stock Purchase Plan"
       }
      }
     },
     "localname": "EmployeeStockPurchasePlanMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_IncomeTaxesLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Income Taxes [Line Items]",
        "label": "Income Taxes [Line Items]",
        "terseLabel": "Income Taxes [Line Items]"
       }
      }
     },
     "localname": "IncomeTaxesLineItems",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTextualDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "calx_IncomeTaxesTable": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Income Taxes [Table]",
        "label": "Income Taxes [Table]",
        "terseLabel": "Income Taxes"
       }
      }
     },
     "localname": "IncomeTaxesTable",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTextualDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "calx_LesseeOperatingLeaseLiabilityTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Lessee, Operating Lease Liability",
        "label": "Lessee, Operating Lease Liability [Table Text Block]",
        "terseLabel": "Lessee, Operating Leases"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityTableTextBlock",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "calx_LumenTechnologiesIncMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Lumen Technologies, Inc.",
        "label": "Lumen Technologies, Inc. [Member]",
        "terseLabel": "Lumen Technologies, Inc."
       }
      }
     },
     "localname": "LumenTechnologiesIncMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_MiddleEastAndAfricaMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Middle East And Africa",
        "label": "Middle East And Africa [Member]",
        "terseLabel": "Middle East &amp; Africa"
       }
      }
     },
     "localname": "MiddleEastAndAfricaMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_MinimumExercisePriceOfStockOptionPercent": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Minimum exercise price of stock options expressed as a percentage of the fair market value of the Company\u2019s common stock at grant date.",
        "label": "Minimum Exercise Price Of Stock Option Percent",
        "terseLabel": "Minimum exercise price of stock option, percentage"
       }
      }
     },
     "localname": "MinimumExercisePriceOfStockOptionPercent",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "calx_OneCustomerMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "One Customer",
        "label": "One Customer [Member]",
        "terseLabel": "One Customer"
       }
      }
     },
     "localname": "OneCustomerMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_OtherStateMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Other State [Member]",
        "label": "Other State [Member]",
        "terseLabel": "Other State"
       }
      }
     },
     "localname": "OtherStateMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTextualDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_PaymentsForFinancingArrangements": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 3.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Payments For Financing Arrangements",
        "label": "Payments For Financing Arrangements",
        "negatedTerseLabel": "Payments related to financing arrangements"
       }
      }
     },
     "localname": "PaymentsForFinancingArrangements",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_PercentOfHistoricalVolatility": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percent of Historical Volatility",
        "label": "Percent of Historical Volatility",
        "terseLabel": "Percent of historical volatility"
       }
      }
     },
     "localname": "PercentOfHistoricalVolatility",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "calx_PercentOfImpliedVolatility": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percent of Implied Volatility",
        "label": "Percent of Implied Volatility",
        "terseLabel": "Percent of implied volatility"
       }
      }
     },
     "localname": "PercentOfImpliedVolatility",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "calx_PerformanceBasedStockOptionsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Performance Based Stock Options",
        "label": "Performance Based Stock Options [Member]",
        "terseLabel": "Performance Based Stock Options"
       }
      }
     },
     "localname": "PerformanceBasedStockOptionsMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_PerformanceTargetsServicesConditionPeriod": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Performance Targets Services Condition Period",
        "label": "Performance Targets Services Condition Period",
        "terseLabel": "Performance targets services condition period"
       }
      }
     },
     "localname": "PerformanceTargetsServicesConditionPeriod",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "calx_PrepaidExpensesAndOtherAssetsMiscellaneousCurrent": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_PrepaidExpenseAndOtherAssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Prepaid Expenses And Other Assets, Miscellaneous, Current",
        "label": "Prepaid Expenses And Other Assets, Miscellaneous, Current",
        "terseLabel": "Prepaid expenses and other current assets"
       }
      }
     },
     "localname": "PrepaidExpensesAndOtherAssetsMiscellaneousCurrent",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_ProductReturnReserveCurrent": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails": {
       "order": 10.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Product Return Reserve, Current",
        "label": "Product Return Reserve, Current",
        "terseLabel": "Product returns"
       }
      }
     },
     "localname": "ProductReturnReserveCurrent",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "calx_ProductWarrantyPeriod": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents the general warranty period for the Company's hardware products from the date of shipment.",
        "label": "Product Warranty Period",
        "terseLabel": "Product warranty period"
       }
      }
     },
     "localname": "ProductWarrantyPeriod",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "calx_PublicStockOfferingMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Public Stock Offering",
        "label": "Public Stock Offering [Member]",
        "terseLabel": "Public Stock Offering"
       }
      }
     },
     "localname": "PublicStockOfferingMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_SECSchedule1209ReserveProductReturnsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Reserve established for amounts due that are unlikely to be received due to customer's return of products.",
        "label": "SEC Schedule, 12-09, Reserve, Product Returns [Member]",
        "terseLabel": "Product return liability"
       }
      }
     },
     "localname": "SECSchedule1209ReserveProductReturnsMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_SanJoseCaliforniaMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "San Jose, California",
        "label": "San Jose, California [Member]",
        "terseLabel": "San Jose, California"
       }
      }
     },
     "localname": "SanJoseCaliforniaMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails",
      "http://www.calix.com/role/CommitmentsandContingenciesTextualDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_ScheduleOfCertainTermsLineItemsLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule of Certain Terms [Line Items]",
        "label": "Schedule of Certain Terms [Line Items] [Line Items]",
        "terseLabel": "Schedule of Certain Terms [Line Items]"
       }
      }
     },
     "localname": "ScheduleOfCertainTermsLineItemsLineItems",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "calx_ScheduleOfCertainTermsTableTable": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule of ranges of cutomer payment term and warranty term.",
        "label": "Schedule of Certain Terms [Table] [Table]",
        "terseLabel": "Schedule of Certain Terms [Table]"
       }
      }
     },
     "localname": "ScheduleOfCertainTermsTableTable",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "calx_ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule Of Changes In Allowance For Doubtful Accounts And Product Return Liability",
        "label": "Schedule Of Changes In Allowance For Doubtful Accounts And Product Return Liability [Table Text Block]",
        "terseLabel": "Changes in Allowance for Doubtful Accounts and Product Reserve"
       }
      }
     },
     "localname": "ScheduleOfChangesInAllowanceForDoubtfulAccountsAndProductReturnLiabilityTableTextBlock",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "calx_ScheduleOfGrantDateFairValuesTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule of Grant Date Fair Values [Table Text Block]",
        "label": "Schedule of Grant Date Fair Values [Table Text Block]",
        "terseLabel": "Schedule of Grant Date Fair Values"
       }
      }
     },
     "localname": "ScheduleOfGrantDateFairValuesTableTextBlock",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-Based Compensation Arrangement By Share-Based Payment Award, Awards Percentage Of Total Subject To Service Condition",
        "label": "Share-Based Compensation Arrangement By Share-Based Payment Award, Awards Percentage Of Total Subject To Service Condition",
        "terseLabel": "Awards percentage of total subject to service condition"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardsPercentageOfTotalSubjectToServiceCondition",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-Based Compensation Arrangement By Share-Based Payment Award, Bookings, Target Achievement Performance Threshold, Percent",
        "label": "Share-Based Compensation Arrangement By Share-Based Payment Award, Bookings, Target Achievement Performance Threshold, Percent",
        "terseLabel": "Bookings target achievement performance threshold, percent"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardBookingsTargetAchievementPerformanceThresholdPercent",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-Based Compensation Arrangement By Share-Based Payment Award, Employee Termination Period Following Purchase Date To Receive Shares Subject To Risk Of Forfeiture",
        "label": "Share-Based Compensation Arrangement By Share-Based Payment Award, Employee Termination Period Following Purchase Date To Receive Shares Subject To Risk Of Forfeiture",
        "terseLabel": "Employee termination period following purchase date to receive shares subject to risk of forfeiture"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEmployeeTerminationPeriodFollowingPurchaseDateToReceiveSharesSubjectToRiskOfForfeiture",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-Based Compensation Arrangement By Share-Based Payment Award, Maximum Contribution Percent",
        "label": "Share-Based Compensation Arrangement By Share-Based Payment Award, Maximum Contribution Percent",
        "terseLabel": "Maximum contribution percent"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumContributionPercent",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-Based Compensation Arrangement By Share-Based Payment Award, Net Income Per Share, Target Achievement Performance Threshold, Percent",
        "label": "Share-Based Compensation Arrangement By Share-Based Payment Award, Net Income Per Share, Target Achievement Performance Threshold, Percent",
        "terseLabel": "Target achievement performance threshold, percent"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNetIncomePerShareTargetAchievementPerformanceThresholdPercent",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-Based Compensation Arrangement By Share-Based Payment Award, Number Of Offering Periods",
        "label": "Share-Based Compensation Arrangement By Share-Based Payment Award, Number Of Offering Periods",
        "terseLabel": "Number of offering periods"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfOfferingPeriods",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "integerItemType"
    },
    "calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-Based Compensation Arrangement By Share-Based Payment Award, Number Of Shares Authorized Per Purchase Period",
        "label": "Share-Based Compensation Arrangement By Share-Based Payment Award, Number Of Shares Authorized Per Purchase Period",
        "terseLabel": "Number of shares authorized per purchase period"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorizedPerPurchasePeriod",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share Based Compensation Arrangement By Share Based Payment Award Number Of Shares Available For Grant, Additional Shares",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Number Of Shares Available For Grant, Additional Shares",
        "terseLabel": "Shares available for issuance, additional shares (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrantAdditionalShares",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails",
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-Based Compensation Arrangement By Share-Based Payment Award, Number Of Shares Granted If Target Achievement Performance Threshold Not Met",
        "label": "Share-Based Compensation Arrangement By Share-Based Payment Award, Number Of Shares Granted If Target Achievement Performance Threshold Not Met",
        "terseLabel": "Number of shares granted if target achievement performance threshold not met (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesGrantedIfTargetAchievementPerformanceThresholdNotMet",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-Based Compensation Arrangement By Share-Based Payment Award, Shares Award Target Achievement Performance Threshold, Percent",
        "label": "Share-Based Compensation Arrangement By Share-Based Payment Award, Shares Award Target Achievement Performance Threshold, Percent",
        "terseLabel": "Shares award target achievement performance threshold, percent"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardTargetAchievementPerformanceThresholdPercent",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "calx_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-Based Compensation Arrangement By Share-Based Payment Award, Shares Award Weighting Percent For Target Achievement Performance Threshold, Percent",
        "label": "Share-Based Compensation Arrangement By Share-Based Payment Award, Shares Award Weighting Percent For Target Achievement Performance Threshold, Percent",
        "terseLabel": "Shares award weighting percent for target achievement performance threshold, percent"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesAwardWeightingPercentForTargetAchievementPerformanceThresholdPercent",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "calx_SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Intrinsic Value, Amount Per Share",
        "label": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Intrinsic Value, Amount Per Share",
        "terseLabel": "Stock options, intrinsic value per share (in dollars per share)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementbySharebasedPaymentAwardOptionsOutstandingIntrinsicValueAmountPerShare",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "calx_SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price of Common Stock, Offering Period",
        "label": "Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price of Common Stock, Offering Period",
        "terseLabel": "Offering period"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementbySharebasedPaymentAwardPurchasePriceofCommonStockOfferingPeriod",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "calx_SharesReservedForFutureIssuanceTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents the schedule to summarize the number of common shares reserved for future issuance. [Table Text Block]",
        "label": "Shares Reserved For Future Issuance [Table Text Block]",
        "terseLabel": "Shares Reserved For Future Issuance"
       }
      }
     },
     "localname": "SharesReservedForFutureIssuanceTableTextBlock",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "calx_ShortTermMarketableSecuritiesAndCashEquivalentsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Short-Term Marketable Securities And Cash Equivalents",
        "label": "Short-Term Marketable Securities And Cash Equivalents [Member]",
        "terseLabel": "Short-Term Marketable Securities And Cash Equivalents"
       }
      }
     },
     "localname": "ShortTermMarketableSecuritiesAndCashEquivalentsMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_ShortTermMarketableSecuritiesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Short-Term Marketable Securities",
        "label": "Short-Term Marketable Securities [Member]",
        "terseLabel": "Short-Term Marketable Securities"
       }
      }
     },
     "localname": "ShortTermMarketableSecuritiesMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_SoftwareMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Software",
        "label": "Software [Member]",
        "terseLabel": "Software"
       }
      }
     },
     "localname": "SoftwareMember",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "calx_TaxesPayableCurrentExcludingAccruedIncomeTaxes": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Taxes Payable, Current, Excluding Accrued Income Taxes",
        "label": "Taxes Payable, Current, Excluding Accrued Income Taxes",
        "terseLabel": "Taxes payable"
       }
      }
     },
     "localname": "TaxesPayableCurrentExcludingAccruedIncomeTaxes",
     "nsuri": "http://www.calix.com/20221231",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "country_CN": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "CHINA",
        "terseLabel": "China"
       }
      }
     },
     "localname": "CN",
     "nsuri": "http://xbrl.sec.gov/country/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "country_IN": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "INDIA",
        "terseLabel": "India"
       }
      }
     },
     "localname": "IN",
     "nsuri": "http://xbrl.sec.gov/country/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "country_US": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "UNITED STATES",
        "terseLabel": "United States"
       }
      }
     },
     "localname": "US",
     "nsuri": "http://xbrl.sec.gov/country/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails",
      "http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "dei_AmendmentFlag": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true when the XBRL content amends previously-filed or accepted submission.",
        "label": "Amendment Flag",
        "terseLabel": "Amendment Flag"
       }
      }
     },
     "localname": "AmendmentFlag",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_AuditorFirmId": {
     "auth_ref": [
      "r583",
      "r584",
      "r585"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "PCAOB issued Audit Firm Identifier",
        "label": "Auditor Firm ID",
        "terseLabel": "Auditor Firm ID"
       }
      }
     },
     "localname": "AuditorFirmId",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/AuditInformation"
     ],
     "xbrltype": "nonemptySequenceNumberItemType"
    },
    "dei_AuditorLocation": {
     "auth_ref": [
      "r583",
      "r584",
      "r585"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Auditor Location",
        "terseLabel": "Auditor Location"
       }
      }
     },
     "localname": "AuditorLocation",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/AuditInformation"
     ],
     "xbrltype": "internationalNameItemType"
    },
    "dei_AuditorName": {
     "auth_ref": [
      "r583",
      "r584",
      "r585"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Auditor Name",
        "terseLabel": "Auditor Name"
       }
      }
     },
     "localname": "AuditorName",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/AuditInformation"
     ],
     "xbrltype": "internationalNameItemType"
    },
    "dei_CityAreaCode": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Area code of city",
        "label": "City Area Code",
        "terseLabel": "City Area Code"
       }
      }
     },
     "localname": "CityAreaCode",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_CoverAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Cover page.",
        "label": "Cover [Abstract]",
        "terseLabel": "Cover [Abstract]"
       }
      }
     },
     "localname": "CoverAbstract",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "xbrltype": "stringItemType"
    },
    "dei_CurrentFiscalYearEndDate": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "End date of current fiscal year in the format --MM-DD.",
        "label": "Current Fiscal Year End Date",
        "terseLabel": "Current Fiscal Year End Date"
       }
      }
     },
     "localname": "CurrentFiscalYearEndDate",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "gMonthDayItemType"
    },
    "dei_DocumentAnnualReport": {
     "auth_ref": [
      "r583",
      "r584",
      "r585"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true only for a form used as an annual report.",
        "label": "Document Annual Report",
        "terseLabel": "Document Annual Report"
       }
      }
     },
     "localname": "DocumentAnnualReport",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_DocumentFiscalPeriodFocus": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fiscal period values are FY, Q1, Q2, and Q3.  1st, 2nd and 3rd quarter 10-Q or 10-QT statements have value Q1, Q2, and Q3 respectively, with 10-K, 10-KT or other fiscal year statements having FY.",
        "label": "Document Fiscal Period Focus",
        "terseLabel": "Document Fiscal Period Focus"
       }
      }
     },
     "localname": "DocumentFiscalPeriodFocus",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "fiscalPeriodItemType"
    },
    "dei_DocumentFiscalYearFocus": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "This is focus fiscal year of the document report in YYYY format. For a 2006 annual report, which may also provide financial information from prior periods, fiscal 2006 should be given as the fiscal year focus. Example: 2006.",
        "label": "Document Fiscal Year Focus",
        "terseLabel": "Document Fiscal Year Focus"
       }
      }
     },
     "localname": "DocumentFiscalYearFocus",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "gYearItemType"
    },
    "dei_DocumentPeriodEndDate": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "For the EDGAR submission types of Form 8-K: the date of the report, the date of the earliest event reported; for the EDGAR submission types of Form N-1A: the filing date; for all other submission types: the end of the reporting or transition period.  The format of the date is YYYY-MM-DD.",
        "label": "Document Period End Date",
        "terseLabel": "Document Period End Date"
       }
      }
     },
     "localname": "DocumentPeriodEndDate",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "dateItemType"
    },
    "dei_DocumentTransitionReport": {
     "auth_ref": [
      "r586"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true only for a form used as a transition report.",
        "label": "Document Transition Report",
        "terseLabel": "Document Transition Report"
       }
      }
     },
     "localname": "DocumentTransitionReport",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_DocumentType": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The type of document being provided (such as 10-K, 10-Q, 485BPOS, etc). The document type is limited to the same value as the supporting SEC submission type, or the word 'Other'.",
        "label": "Document Type",
        "terseLabel": "Document Type"
       }
      }
     },
     "localname": "DocumentType",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "submissionTypeItemType"
    },
    "dei_DocumentsIncorporatedByReferenceTextBlock": {
     "auth_ref": [
      "r581"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Documents incorporated by reference.",
        "label": "Documents Incorporated by Reference [Text Block]",
        "terseLabel": "Documents Incorporated by Reference"
       }
      }
     },
     "localname": "DocumentsIncorporatedByReferenceTextBlock",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "textBlockItemType"
    },
    "dei_EntityAddressAddressLine1": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Address Line 1 such as Attn, Building Name, Street Name",
        "label": "Entity Address, Address Line One",
        "terseLabel": "Entity Address, Address Line One"
       }
      }
     },
     "localname": "EntityAddressAddressLine1",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityAddressCityOrTown": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Name of the City or Town",
        "label": "Entity Address, City or Town",
        "terseLabel": "Entity Address, City or Town"
       }
      }
     },
     "localname": "EntityAddressCityOrTown",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityAddressPostalZipCode": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Code for the postal or zip code",
        "label": "Entity Address, Postal Zip Code",
        "terseLabel": "Entity Address, Postal Zip Code"
       }
      }
     },
     "localname": "EntityAddressPostalZipCode",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityAddressStateOrProvince": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Name of the state or province.",
        "label": "Entity Address, State or Province",
        "terseLabel": "Entity Address, State or Province"
       }
      }
     },
     "localname": "EntityAddressStateOrProvince",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "stateOrProvinceItemType"
    },
    "dei_EntityCentralIndexKey": {
     "auth_ref": [
      "r580"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK.",
        "label": "Entity Central Index Key",
        "terseLabel": "Entity Central Index Key"
       }
      }
     },
     "localname": "EntityCentralIndexKey",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "centralIndexKeyItemType"
    },
    "dei_EntityCommonStockSharesOutstanding": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument.",
        "label": "Entity Common Stock, Shares Outstanding",
        "terseLabel": "Entity Common Stock, Shares Outstanding"
       }
      }
     },
     "localname": "EntityCommonStockSharesOutstanding",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "sharesItemType"
    },
    "dei_EntityCurrentReportingStatus": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate 'Yes' or 'No' whether registrants (1) have filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that registrants were required to file such reports), and (2) have been subject to such filing requirements for the past 90 days. This information should be based on the registrant's current or most recent filing containing the related disclosure.",
        "label": "Entity Current Reporting Status",
        "terseLabel": "Entity Current Reporting Status"
       }
      }
     },
     "localname": "EntityCurrentReportingStatus",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityEmergingGrowthCompany": {
     "auth_ref": [
      "r580"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate if registrant meets the emerging growth company criteria.",
        "label": "Entity Emerging Growth Company",
        "terseLabel": "Entity Emerging Growth Company"
       }
      }
     },
     "localname": "EntityEmergingGrowthCompany",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntityFileNumber": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Commission file number. The field allows up to 17 characters. The prefix may contain 1-3 digits, the sequence number may contain 1-8 digits, the optional suffix may contain 1-4 characters, and the fields are separated with a hyphen.",
        "label": "Entity File Number",
        "terseLabel": "Entity File Number"
       }
      }
     },
     "localname": "EntityFileNumber",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "fileNumberItemType"
    },
    "dei_EntityFilerCategory": {
     "auth_ref": [
      "r580"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate whether the registrant is one of the following: Large Accelerated Filer, Accelerated Filer, Non-accelerated Filer. Definitions of these categories are stated in Rule 12b-2 of the Exchange Act. This information should be based on the registrant's current or most recent filing containing the related disclosure.",
        "label": "Entity Filer Category",
        "terseLabel": "Entity Filer Category"
       }
      }
     },
     "localname": "EntityFilerCategory",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "filerCategoryItemType"
    },
    "dei_EntityIncorporationStateCountryCode": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Two-character EDGAR code representing the state or country of incorporation.",
        "label": "Entity Incorporation, State or Country Code",
        "terseLabel": "Entity Incorporation, State or Country Code"
       }
      }
     },
     "localname": "EntityIncorporationStateCountryCode",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "edgarStateCountryItemType"
    },
    "dei_EntityInteractiveDataCurrent": {
     "auth_ref": [
      "r587"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true when the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T during the preceding 12 months (or for such shorter period that the registrant was required to submit such files).",
        "label": "Entity Interactive Data Current",
        "terseLabel": "Entity Interactive Data Current"
       }
      }
     },
     "localname": "EntityInteractiveDataCurrent",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityPublicFloat": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate market value of the voting and non-voting common equity held by non-affiliates computed by reference to the price at which the common equity was last sold, or the average bid and asked price of such common equity, as of the last business day of the registrant's most recently completed second fiscal quarter.",
        "label": "Entity Public Float",
        "terseLabel": "Entity Public Float"
       }
      }
     },
     "localname": "EntityPublicFloat",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "monetaryItemType"
    },
    "dei_EntityRegistrantName": {
     "auth_ref": [
      "r580"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC.",
        "label": "Entity Registrant Name",
        "terseLabel": "Entity Registrant Name"
       }
      }
     },
     "localname": "EntityRegistrantName",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityShellCompany": {
     "auth_ref": [
      "r580"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act.",
        "label": "Entity Shell Company",
        "terseLabel": "Entity Shell Company"
       }
      }
     },
     "localname": "EntityShellCompany",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntitySmallBusiness": {
     "auth_ref": [
      "r580"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicates that the company is a Smaller Reporting Company (SRC).",
        "label": "Entity Small Business",
        "terseLabel": "Entity Small Business"
       }
      }
     },
     "localname": "EntitySmallBusiness",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntityTaxIdentificationNumber": {
     "auth_ref": [
      "r580"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS.",
        "label": "Entity Tax Identification Number",
        "terseLabel": "Entity Tax Identification Number"
       }
      }
     },
     "localname": "EntityTaxIdentificationNumber",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "employerIdItemType"
    },
    "dei_EntityVoluntaryFilers": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate 'Yes' or 'No' if the registrant is not required to file reports pursuant to Section 13 or Section 15(d) of the Act.",
        "label": "Entity Voluntary Filers",
        "terseLabel": "Entity Voluntary Filers"
       }
      }
     },
     "localname": "EntityVoluntaryFilers",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityWellKnownSeasonedIssuer": {
     "auth_ref": [
      "r588"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate 'Yes' or 'No' if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act. Is used on Form Type: 10-K, 10-Q, 8-K, 20-F, 6-K, 10-K/A, 10-Q/A, 20-F/A, 6-K/A, N-CSR, N-Q, N-1A.",
        "label": "Entity Well-known Seasoned Issuer",
        "terseLabel": "Entity Well-known Seasoned Issuer"
       }
      }
     },
     "localname": "EntityWellKnownSeasonedIssuer",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_IcfrAuditorAttestationFlag": {
     "auth_ref": [
      "r583",
      "r584",
      "r585"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ICFR Auditor Attestation Flag",
        "terseLabel": "ICFR Auditor Attestation Flag"
       }
      }
     },
     "localname": "IcfrAuditorAttestationFlag",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_LocalPhoneNumber": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Local phone number for entity.",
        "label": "Local Phone Number",
        "terseLabel": "Local Phone Number"
       }
      }
     },
     "localname": "LocalPhoneNumber",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_Security12bTitle": {
     "auth_ref": [
      "r579"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Title of a 12(b) registered security.",
        "label": "Title of 12(b) Security",
        "terseLabel": "Title of 12(b) Security"
       }
      }
     },
     "localname": "Security12bTitle",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "securityTitleItemType"
    },
    "dei_SecurityExchangeName": {
     "auth_ref": [
      "r582"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Name of the Exchange on which a security is registered.",
        "label": "Security Exchange Name",
        "terseLabel": "Security Exchange Name"
       }
      }
     },
     "localname": "SecurityExchangeName",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "edgarExchangeCodeItemType"
    },
    "dei_TradingSymbol": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Trading symbol of an instrument as listed on an exchange.",
        "label": "Trading Symbol",
        "terseLabel": "Trading Symbol"
       }
      }
     },
     "localname": "TradingSymbol",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.calix.com/role/Cover"
     ],
     "xbrltype": "tradingSymbolItemType"
    },
    "srt_AsiaPacificMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Asia Pacific [Member]",
        "terseLabel": "Asia Pacific"
       }
      }
     },
     "localname": "AsiaPacificMember",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ConsolidatedEntitiesAxis": {
     "auth_ref": [
      "r203",
      "r435",
      "r436",
      "r437",
      "r438",
      "r471",
      "r546",
      "r632",
      "r635",
      "r636"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Consolidated Entities [Axis]",
        "terseLabel": "Consolidated Entities [Axis]"
       }
      }
     },
     "localname": "ConsolidatedEntitiesAxis",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ConsolidatedEntitiesDomain": {
     "auth_ref": [
      "r203",
      "r435",
      "r436",
      "r437",
      "r438",
      "r471",
      "r546",
      "r632",
      "r635",
      "r636"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Consolidated Entities [Domain]",
        "terseLabel": "Consolidated Entities [Domain]"
       }
      }
     },
     "localname": "ConsolidatedEntitiesDomain",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_EuropeMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Europe [Member]",
        "terseLabel": "Americas excluding U.S."
       }
      }
     },
     "localname": "EuropeMember",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ExecutiveOfficerMember": {
     "auth_ref": [
      "r612"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Executive Officer [Member]",
        "terseLabel": "Executive Officer"
       }
      }
     },
     "localname": "ExecutiveOfficerMember",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_MajorCustomersAxis": {
     "auth_ref": [
      "r268",
      "r567",
      "r639",
      "r700"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Customer [Axis]",
        "terseLabel": "Customer [Axis]"
       }
      }
     },
     "localname": "MajorCustomersAxis",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_MaximumMember": {
     "auth_ref": [
      "r313",
      "r314",
      "r315",
      "r316",
      "r357",
      "r503",
      "r521",
      "r547",
      "r548",
      "r565",
      "r571",
      "r578",
      "r637",
      "r692",
      "r693",
      "r694",
      "r695",
      "r696",
      "r697"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Maximum [Member]",
        "terseLabel": "Maximum"
       }
      }
     },
     "localname": "MaximumMember",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_MinimumMember": {
     "auth_ref": [
      "r313",
      "r314",
      "r315",
      "r316",
      "r357",
      "r503",
      "r521",
      "r547",
      "r548",
      "r565",
      "r571",
      "r578",
      "r637",
      "r692",
      "r693",
      "r694",
      "r695",
      "r696",
      "r697"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Minimum [Member]",
        "terseLabel": "Minimum"
       }
      }
     },
     "localname": "MinimumMember",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_NameOfMajorCustomerDomain": {
     "auth_ref": [
      "r268",
      "r567",
      "r639",
      "r700"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Customer [Domain]",
        "terseLabel": "Customer [Domain]"
       }
      }
     },
     "localname": "NameOfMajorCustomerDomain",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_RangeAxis": {
     "auth_ref": [
      "r313",
      "r314",
      "r315",
      "r316",
      "r349",
      "r357",
      "r387",
      "r388",
      "r389",
      "r479",
      "r503",
      "r521",
      "r547",
      "r548",
      "r565",
      "r571",
      "r578",
      "r627",
      "r637",
      "r693",
      "r694",
      "r695",
      "r696",
      "r697"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statistical Measurement [Axis]",
        "terseLabel": "Statistical Measurement [Axis]"
       }
      }
     },
     "localname": "RangeAxis",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_RangeMember": {
     "auth_ref": [
      "r313",
      "r314",
      "r315",
      "r316",
      "r349",
      "r357",
      "r387",
      "r388",
      "r389",
      "r479",
      "r503",
      "r521",
      "r547",
      "r548",
      "r565",
      "r571",
      "r578",
      "r627",
      "r637",
      "r693",
      "r694",
      "r695",
      "r696",
      "r697"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statistical Measurement [Domain]",
        "terseLabel": "Statistical Measurement [Domain]"
       }
      }
     },
     "localname": "RangeMember",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_SegmentGeographicalDomain": {
     "auth_ref": [
      "r265",
      "r266",
      "r537",
      "r538",
      "r539",
      "r540",
      "r541",
      "r542",
      "r543",
      "r544",
      "r545",
      "r566",
      "r577",
      "r639"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Geographical [Domain]",
        "terseLabel": "Geographical [Domain]"
       }
      }
     },
     "localname": "SegmentGeographicalDomain",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails",
      "http://www.calix.com/role/CommitmentsandContingenciesTextualDetails",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail",
      "http://www.calix.com/role/RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails",
      "http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_StatementGeographicalAxis": {
     "auth_ref": [
      "r265",
      "r266",
      "r531",
      "r537",
      "r538",
      "r539",
      "r540",
      "r541",
      "r542",
      "r543",
      "r544",
      "r545",
      "r566",
      "r577",
      "r639"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Geographical [Axis]",
        "terseLabel": "Geographical [Axis]"
       }
      }
     },
     "localname": "StatementGeographicalAxis",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails",
      "http://www.calix.com/role/CommitmentsandContingenciesTextualDetails",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail",
      "http://www.calix.com/role/RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails",
      "http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_SubsidiariesMember": {
     "auth_ref": [
      "r642",
      "r686",
      "r687",
      "r689"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Subsidiaries [Member]",
        "terseLabel": "Subsidiaries"
       }
      }
     },
     "localname": "SubsidiariesMember",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_TitleOfIndividualAxis": {
     "auth_ref": [
      "r612",
      "r688"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Title of Individual [Axis]",
        "terseLabel": "Title of Individual [Axis]"
       }
      }
     },
     "localname": "TitleOfIndividualAxis",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_TitleOfIndividualWithRelationshipToEntityDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Title of Individual [Domain]",
        "terseLabel": "Title of Individual [Domain]"
       }
      }
     },
     "localname": "TitleOfIndividualWithRelationshipToEntityDomain",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ValuationAndQualifyingAccountsDisclosureLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Line Items]",
        "terseLabel": "SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Line Items]"
       }
      }
     },
     "localname": "ValuationAndQualifyingAccountsDisclosureLineItems",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ValuationAndQualifyingAccountsDisclosureTable": {
     "auth_ref": [
      "r204",
      "r205",
      "r206",
      "r208",
      "r209"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Table]",
        "terseLabel": "SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Table]"
       }
      }
     },
     "localname": "ValuationAndQualifyingAccountsDisclosureTable",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccountingPoliciesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accounting Policies [Abstract]",
        "terseLabel": "Accounting Policies [Abstract]"
       }
      }
     },
     "localname": "AccountingPoliciesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccountsPayableCurrent": {
     "auth_ref": [
      "r14",
      "r576"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 3.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying value as of the balance sheet date of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "Accounts Payable, Current",
        "verboseLabel": "Accounts payable"
       }
      }
     },
     "localname": "AccountsPayableCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccountsReceivableGrossCurrent": {
     "auth_ref": [
      "r170",
      "r270",
      "r271",
      "r551"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccountsReceivableDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_AccountsReceivableNetCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, before allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current.",
        "label": "Accounts Receivable, before Allowance for Credit Loss, Current",
        "verboseLabel": "Accounts receivable"
       }
      }
     },
     "localname": "AccountsReceivableGrossCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccountsReceivableDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccountsReceivableMember": {
     "auth_ref": [
      "r532"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Due from customers or clients for goods or services that have been delivered or sold.",
        "label": "Accounts Receivable [Member]",
        "terseLabel": "Accounts Receivable"
       }
      }
     },
     "localname": "AccountsReceivableMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccountsReceivableNetCurrent": {
     "auth_ref": [
      "r270",
      "r271"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccountsReceivableDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 3.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current.",
        "label": "Accounts Receivable, after Allowance for Credit Loss, Current",
        "totalLabel": "Accounts receivable, net",
        "verboseLabel": "Accounts receivable, net"
       }
      }
     },
     "localname": "AccountsReceivableNetCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccountsReceivableDetails",
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccountsReceivableNetCurrentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accounts Receivable, after Allowance for Credit Loss, Current [Abstract]",
        "verboseLabel": "Summary of accounts receivable, net"
       }
      }
     },
     "localname": "AccountsReceivableNetCurrentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccountsReceivableDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments": {
     "auth_ref": [
      "r49"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 12.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The sum of the periodic adjustments of the differences between securities' face values and purchase prices that are charged against earnings. This is called accretion if the security was purchased at a discount and amortization if it was purchased at premium. As a noncash item, this element is an adjustment to net income when calculating cash provided by or used in operations using the indirect method.",
        "label": "Accretion (Amortization) of Discounts and Premiums, Investments",
        "negatedTerseLabel": "Net accretion of available-for-sale securities"
       }
      }
     },
     "localname": "AccretionAmortizationOfDiscountsAndPremiumsInvestments",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedLiabilitiesCurrent": {
     "auth_ref": [
      "r16"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 1.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying value as of the balance sheet date of obligations incurred and payable, pertaining to costs that are statutory in nature, are incurred on contractual obligations, or accumulate over time and for which invoices have not yet been received or will not be rendered. Examples include taxes, interest, rent and utilities. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "Accrued Liabilities, Current",
        "totalLabel": "Total accrued liabilities",
        "verboseLabel": "Accrued liabilities"
       }
      }
     },
     "localname": "AccruedLiabilitiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails",
      "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails",
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedLiabilitiesCurrentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accrued Liabilities, Current [Abstract]",
        "verboseLabel": "Summary of accrued liabilities"
       }
      }
     },
     "localname": "AccruedLiabilitiesCurrentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccruedProfessionalFeesCurrent": {
     "auth_ref": [
      "r16"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails": {
       "order": 11.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying value as of the balance sheet date of obligations incurred through that date and payable for professional fees, such as for legal and accounting services received. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "Accrued Professional Fees, Current",
        "terseLabel": "Professional and consulting fees"
       }
      }
     },
     "localname": "AccruedProfessionalFeesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment": {
     "auth_ref": [
      "r78",
      "r166"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of accumulated depreciation, depletion and amortization for physical assets used in the normal conduct of business to produce goods and services.",
        "label": "Accumulated Depreciation, Depletion and Amortization, Property, Plant, and Equipment",
        "negatedLabel": "Accumulated depreciation and amortization"
       }
      }
     },
     "localname": "AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember": {
     "auth_ref": [
      "r176",
      "r177",
      "r178",
      "r180",
      "r188",
      "r189",
      "r594"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accumulated unrealized gain (loss) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), attributable to parent.",
        "label": "AOCI, Accumulated Gain (Loss), Debt Securities, Available-for-Sale, Parent [Member]",
        "terseLabel": "Unrealized Gains and Losses on Available-for-Sale Marketable Securities"
       }
      }
     },
     "localname": "AccumulatedNetUnrealizedInvestmentGainLossMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Accumulated Other Comprehensive Income (Loss) [Line Items]",
        "terseLabel": "Accumulated Other Comprehensive Income (Loss) [Line Items]"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax": {
     "auth_ref": [
      "r25",
      "r26",
      "r27",
      "r171",
      "r516",
      "r526",
      "r527"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 4.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accumulated change in equity from transactions and other events and circumstances from non-owner sources, net of tax effect, at period end. Excludes Net Income (Loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners. Includes foreign currency translation items, certain pension adjustments, unrealized gains and losses on certain investments in debt and equity securities, other than temporary impairment (OTTI) losses related to factors other than credit losses on available-for-sale and held-to-maturity debt securities that an entity does not intend to sell and it is not more likely than not that the entity will be required to sell before recovery of the amortized cost basis, as well as changes in the fair value of derivatives related to the effective portion of a designated cash flow hedge.",
        "label": "Accumulated Other Comprehensive Income (Loss), Net of Tax",
        "verboseLabel": "Accumulated other comprehensive loss"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossTable": {
     "auth_ref": [
      "r187",
      "r188",
      "r452",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of information about components of accumulated other comprehensive income (loss).",
        "label": "Accumulated Other Comprehensive Income (Loss) [Table]",
        "terseLabel": "Accumulated Other Comprehensive Income (Loss) [Table]"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeMember": {
     "auth_ref": [
      "r24",
      "r27",
      "r127",
      "r470",
      "r522",
      "r523",
      "r594",
      "r595",
      "r596",
      "r607",
      "r608",
      "r609"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accumulated increase (decrease) in equity from transactions and other events and circumstances from non-owner sources, attributable to the parent. Excludes net income (loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners.",
        "label": "AOCI Attributable to Parent [Member]",
        "terseLabel": "Accumulated Other Comprehensive Loss",
        "verboseLabel": "Total"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails",
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccumulatedTranslationAdjustmentMember": {
     "auth_ref": [
      "r23",
      "r27",
      "r127",
      "r188",
      "r189",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457",
      "r594"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accumulated other comprehensive income (loss) resulting from foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature, attributable to the parent.",
        "label": "Accumulated Foreign Currency Adjustment Attributable to Parent [Member]",
        "terseLabel": "Foreign Currency Translation Adjustments"
       }
      }
     },
     "localname": "AccumulatedTranslationAdjustmentMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AdditionalPaidInCapitalCommonStock": {
     "auth_ref": [
      "r6"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 3.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Value received from shareholders in common stock-related transactions that are in excess of par value or stated value and amounts received from other stock-related transactions. Includes only common stock transactions (excludes preferred stock transactions). May be called contributed capital, capital in excess of par, capital surplus, or paid-in capital.",
        "label": "Additional Paid in Capital, Common Stock",
        "verboseLabel": "Additional paid-in capital"
       }
      }
     },
     "localname": "AdditionalPaidInCapitalCommonStock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AdditionalPaidInCapitalMember": {
     "auth_ref": [
      "r393",
      "r394",
      "r395",
      "r607",
      "r608",
      "r609",
      "r678"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Excess of issue price over par or stated value of the entity's capital stock and amounts received from other transactions involving the entity's stock or stockholders.",
        "label": "Additional Paid-in Capital [Member]",
        "terseLabel": "Additional Paid-in Capital"
       }
      }
     },
     "localname": "AdditionalPaidInCapitalMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue": {
     "auth_ref": [
      "r109",
      "r110",
      "r359"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement.",
        "label": "APIC, Share-Based Payment Arrangement, Increase for Cost Recognition",
        "terseLabel": "Stock-based compensation"
       }
      }
     },
     "localname": "AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Adjustments to Reconcile Net Income (Loss) to Cash Provided by (Used in) Operating Activities [Abstract]",
        "verboseLabel": "Adjustments to reconcile net income to net cash provided by operating activities:"
       }
      }
     },
     "localname": "AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AllocatedShareBasedCompensationExpense": {
     "auth_ref": [
      "r391"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of expense for award under share-based payment arrangement. Excludes amount capitalized.",
        "label": "Share-Based Payment Arrangement, Expense",
        "verboseLabel": "Stock based compensation"
       }
      }
     },
     "localname": "AllocatedShareBasedCompensationExpense",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AllowanceForCreditLossMember": {
     "auth_ref": [
      "r602",
      "r603",
      "r604",
      "r605",
      "r606"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Allowance for credit loss from right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time.",
        "label": "SEC Schedule, 12-09, Allowance, Credit Loss [Member]",
        "terseLabel": "Allowance for doubtful accounts"
       }
      }
     },
     "localname": "AllowanceForCreditLossMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent": {
     "auth_ref": [
      "r172",
      "r272",
      "r278"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccountsReceivableDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_AccountsReceivableNetCurrent",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of allowance for credit loss on accounts receivable, classified as current.",
        "label": "Accounts Receivable, Allowance for Credit Loss, Current",
        "negatedLabel": "Allowance for doubtful accounts"
       }
      }
     },
     "localname": "AllowanceForDoubtfulAccountsReceivableCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccountsReceivableDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount": {
     "auth_ref": [
      "r233"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) or earnings per unit (EPU) in the future that were not included in the computation of diluted EPS or EPU because to do so would increase EPS or EPU amounts or decrease loss per share or unit amounts for the period presented.",
        "label": "Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount",
        "terseLabel": "Potentially dilutive shares, weighted-average (in shares)"
       }
      }
     },
     "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_Assets": {
     "auth_ref": [
      "r139",
      "r150",
      "r169",
      "r199",
      "r251",
      "r255",
      "r260",
      "r276",
      "r317",
      "r318",
      "r319",
      "r320",
      "r321",
      "r322",
      "r323",
      "r324",
      "r325",
      "r435",
      "r437",
      "r450",
      "r576",
      "r633",
      "r634",
      "r690"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are recognized. Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.",
        "label": "Assets",
        "totalLabel": "Total assets"
       }
      }
     },
     "localname": "Assets",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AssetsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Assets [Abstract]",
        "verboseLabel": "ASSETS"
       }
      }
     },
     "localname": "AssetsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AssetsCurrent": {
     "auth_ref": [
      "r161",
      "r175",
      "r199",
      "r276",
      "r317",
      "r318",
      "r319",
      "r320",
      "r321",
      "r322",
      "r323",
      "r324",
      "r325",
      "r435",
      "r437",
      "r450",
      "r576",
      "r633",
      "r634",
      "r690"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 6.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are expected to be realized in cash, sold, or consumed within one year (or the normal operating cycle, if longer). Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.",
        "label": "Assets, Current",
        "totalLabel": "Total current assets"
       }
      }
     },
     "localname": "AssetsCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AssetsCurrentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Assets, Current [Abstract]",
        "verboseLabel": "Current assets:"
       }
      }
     },
     "localname": "AssetsCurrentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AssetsFairValueDisclosure": {
     "auth_ref": [
      "r130"
     ],
     "calculation": {
      "http://www.calix.com/role/FairValueMeasurementsDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value portion of probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.",
        "label": "Assets, Fair Value Disclosure",
        "totalLabel": "Total assets"
       }
      }
     },
     "localname": "AssetsFairValueDisclosure",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax": {
     "auth_ref": [
      "r69"
     ],
     "calculation": {
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, before tax, of unrealized loss in accumulated other comprehensive income (AOCI) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).",
        "label": "Debt Securities, Available-for-Sale, Accumulated Gross Unrealized Loss, before Tax",
        "negatedTerseLabel": "Gross Unrealized Losses"
       }
      }
     },
     "localname": "AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AwardTypeAxis": {
     "auth_ref": [
      "r362",
      "r363",
      "r364",
      "r366",
      "r367",
      "r368",
      "r369",
      "r370",
      "r371",
      "r372",
      "r373",
      "r374",
      "r375",
      "r376",
      "r377",
      "r378",
      "r379",
      "r380",
      "r381",
      "r382",
      "r383",
      "r386",
      "r387",
      "r388",
      "r389",
      "r390"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of award under share-based payment arrangement.",
        "label": "Award Type [Axis]",
        "terseLabel": "Award Type [Axis]"
       }
      }
     },
     "localname": "AwardTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityAssumptionsDetails",
      "http://www.calix.com/role/StockholdersEquityESPPDetails",
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails",
      "http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails",
      "http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails",
      "http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BalanceSheetLocationAxis": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by location on balance sheet (statement of financial position).",
        "label": "Balance Sheet Location [Axis]",
        "terseLabel": "Balance Sheet Location [Axis]"
       }
      }
     },
     "localname": "BalanceSheetLocationAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BalanceSheetLocationDomain": {
     "auth_ref": [
      "r128",
      "r129"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Location in the balance sheet (statement of financial position).",
        "label": "Balance Sheet Location [Domain]",
        "terseLabel": "Balance Sheet Location [Domain]"
       }
      }
     },
     "localname": "BalanceSheetLocationDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BalanceSheetRelatedDisclosuresAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Balance Sheet Related Disclosures [Abstract]",
        "terseLabel": "Balance Sheet Related Disclosures [Abstract]"
       }
      }
     },
     "localname": "BalanceSheetRelatedDisclosuresAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_BasisOfAccountingPolicyPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for basis of accounting, or basis of presentation, used to prepare the financial statements (for example, US Generally Accepted Accounting Principles, Other Comprehensive Basis of Accounting, IFRS).",
        "label": "Basis of Accounting, Policy [Policy Text Block]",
        "terseLabel": "Basis of Presentation and Accounting Guidance"
       }
      }
     },
     "localname": "BasisOfAccountingPolicyPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_BusinessDescriptionAndAccountingPoliciesTextBlock": {
     "auth_ref": [
      "r53",
      "r62"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for the business description and accounting policies concepts. Business description describes the nature and type of organization including but not limited to organizational structure as may be applicable to holding companies, parent and subsidiary relationships, business divisions, business units, business segments, affiliates and information about significant ownership of the reporting entity. Accounting policies describe all significant accounting policies of the reporting entity.",
        "label": "Business Description and Accounting Policies [Text Block]",
        "terseLabel": "Description of Business and Significant Accounting Policies"
       }
      }
     },
     "localname": "BusinessDescriptionAndAccountingPoliciesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CapitalizedContractCostAmortization": {
     "auth_ref": [
      "r290"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of amortization expense for asset recognized from cost incurred to obtain or fulfill contract with customer.",
        "label": "Capitalized Contract Cost, Amortization",
        "terseLabel": "Capitalized contract cost, amortization"
       }
      }
     },
     "localname": "CapitalizedContractCostAmortization",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersContractCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CapitalizedContractCostAmortizationPeriod": {
     "auth_ref": [
      "r619"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amortization period of cost capitalized in obtaining or fulfilling contract with customer, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Capitalized Contract Cost, Amortization Period",
        "terseLabel": "Capitalized contract cost, amortization period"
       }
      }
     },
     "localname": "CapitalizedContractCostAmortizationPeriod",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesContractCostsDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_CapitalizedContractCostGross": {
     "auth_ref": [
      "r620"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, before accumulated amortization and accumulated impairment loss, of asset recognized from cost incurred to obtain or fulfill contract with customer.",
        "label": "Capitalized Contract Cost, Gross",
        "terseLabel": "Capitalized contract cost, gross"
       }
      }
     },
     "localname": "CapitalizedContractCostGross",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersContractCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CapitalizedContractCostImpairmentLoss": {
     "auth_ref": [
      "r290"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of impairment loss for asset recognized from cost incurred to obtain or fulfill contract with customer.",
        "label": "Capitalized Contract Cost, Impairment Loss",
        "terseLabel": "Capitalized contract cost, impairment"
       }
      }
     },
     "localname": "CapitalizedContractCostImpairmentLoss",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersContractCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_Cash": {
     "auth_ref": [
      "r529",
      "r530",
      "r576",
      "r589"
     ],
     "calculation": {
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_CashAndCashEquivalentsAtCarryingValue",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Excludes cash and cash equivalents within disposal group and discontinued operation.",
        "label": "Cash",
        "terseLabel": "Cash"
       }
      }
     },
     "localname": "Cash",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAndCashEquivalentsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cash and Cash Equivalents [Abstract]",
        "terseLabel": "Cash and Cash Equivalents [Abstract]"
       }
      }
     },
     "localname": "CashAndCashEquivalentsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_CashAndCashEquivalentsAtCarryingValue": {
     "auth_ref": [
      "r50",
      "r164",
      "r549"
     ],
     "calculation": {
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails": {
       "order": 2.0,
       "parentTag": "calx_CashCashEquivalentsAndMarketableSecurities",
       "weight": 1.0
      },
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 2.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation.",
        "label": "Cash and Cash Equivalents, at Carrying Value",
        "terseLabel": "Cash and cash equivalents",
        "totalLabel": "Cash and cash equivalents"
       }
      }
     },
     "localname": "CashAndCashEquivalentsAtCarryingValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAndCashEquivalentsAxis": {
     "auth_ref": [
      "r164"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of cash and cash equivalent balance.",
        "label": "Cash and Cash Equivalents [Axis]",
        "terseLabel": "Cash and Cash Equivalents [Axis]"
       }
      }
     },
     "localname": "CashAndCashEquivalentsAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_CashAndCashEquivalentsLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Cash and Cash Equivalents [Line Items]",
        "terseLabel": "Cash and Cash Equivalents [Line Items]"
       }
      }
     },
     "localname": "CashAndCashEquivalentsLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_CashCashEquivalentsAndMarketableSecuritiesTextBlock": {
     "auth_ref": [
      "r70"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure of cash, cash equivalents, and debt and equity securities, including any unrealized or realized gain (loss).",
        "label": "Cash, Cash Equivalents, and Marketable Securities [Text Block]",
        "terseLabel": "Cash, Cash Equivalents and Marketable Securities"
       }
      }
     },
     "localname": "CashCashEquivalentsAndMarketableSecuritiesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecurities"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents": {
     "auth_ref": [
      "r45",
      "r50",
      "r52"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage. Excludes amount for disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.",
        "label": "Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents",
        "periodEndLabel": "Cash and cash equivalents at end of year",
        "periodStartLabel": "Cash and cash equivalents at beginning of year"
       }
      }
     },
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": {
     "auth_ref": [
      "r45",
      "r137"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in cash, cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including effect from exchange rate change. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.",
        "label": "Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Period Increase (Decrease), Including Exchange Rate Effect",
        "totalLabel": "Net increase (decrease) in cash and cash equivalents"
       }
      }
     },
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashEquivalentsAtCarryingValue": {
     "auth_ref": [
      "r589"
     ],
     "calculation": {
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_CashAndCashEquivalentsAtCarryingValue",
       "weight": 1.0
      },
      "http://www.calix.com/role/FairValueMeasurementsDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_AssetsFairValueDisclosure",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation.",
        "label": "Cash Equivalents, at Carrying Value",
        "terseLabel": "Cash equivalents"
       }
      }
     },
     "localname": "CashEquivalentsAtCarryingValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashMember": {
     "auth_ref": [
      "r164"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits.",
        "label": "Cash [Member]",
        "terseLabel": "Cash"
       }
      }
     },
     "localname": "CashMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CommercialPaperMember": {
     "auth_ref": [
      "r91"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Unsecured promissory note (generally negotiable) that provides institutions with short-term funds.",
        "label": "Commercial Paper [Member]",
        "terseLabel": "Commercial paper"
       }
      }
     },
     "localname": "CommercialPaperMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails",
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CommitmentsAndContingencies": {
     "auth_ref": [
      "r19",
      "r145",
      "r155"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 3.0,
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents the caption on the face of the balance sheet to indicate that the entity has entered into (1) purchase or supply arrangements that will require expending a portion of its resources to meet the terms thereof, and (2) is exposed to potential losses or, less frequently, gains, arising from (a) possible claims against a company's resources due to future performance under contract terms, and (b) possible losses or likely gains from uncertainties that will ultimately be resolved when one or more future events that are deemed likely to occur do occur or fail to occur.",
        "label": "Commitments and Contingencies",
        "verboseLabel": "Commitments and contingencies (See Note 5)"
       }
      }
     },
     "localname": "CommitmentsAndContingencies",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CommitmentsAndContingenciesDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Commitments and Contingencies Disclosure [Abstract]",
        "terseLabel": "Commitments and Contingencies Disclosure [Abstract]"
       }
      }
     },
     "localname": "CommitmentsAndContingenciesDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_CommitmentsAndContingenciesDisclosureTextBlock": {
     "auth_ref": [
      "r80",
      "r310",
      "r311",
      "r533",
      "r631"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for commitments and contingencies.",
        "label": "Commitments and Contingencies Disclosure [Text Block]",
        "terseLabel": "Commitments and Contingencies"
       }
      }
     },
     "localname": "CommitmentsAndContingenciesDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingencies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CommitmentsAndContingenciesPolicyTextBlock": {
     "auth_ref": [
      "r87",
      "r534"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for commitments and contingencies, which may include policies for recognizing and measuring loss and gain contingencies.",
        "label": "Commitments and Contingencies, Policy [Policy Text Block]",
        "terseLabel": "Loss Contingencies"
       }
      }
     },
     "localname": "CommitmentsAndContingenciesPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CommonStockCapitalSharesReservedForFutureIssuance": {
     "auth_ref": [
      "r20"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Aggregate number of common shares reserved for future issuance.",
        "label": "Common Stock, Capital Shares Reserved for Future Issuance",
        "terseLabel": "Shares available for future issuance (in shares)"
       }
      }
     },
     "localname": "CommonStockCapitalSharesReservedForFutureIssuance",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockDividendsPerShareDeclared": {
     "auth_ref": [
      "r93"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Aggregate dividends declared during the period for each share of common stock outstanding.",
        "label": "Common Stock, Dividends, Per Share, Declared",
        "terseLabel": "Dividends declared or paid (in dollars per share)"
       }
      }
     },
     "localname": "CommonStockDividendsPerShareDeclared",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_CommonStockMember": {
     "auth_ref": [
      "r607",
      "r608",
      "r678"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Stock that is subordinate to all other stock of the issuer.",
        "label": "Common Stock [Member]",
        "terseLabel": "Common Stock"
       }
      }
     },
     "localname": "CommonStockMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CommonStockParOrStatedValuePerShare": {
     "auth_ref": [
      "r5"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Face amount or stated value per share of common stock.",
        "label": "Common Stock, Par or Stated Value Per Share",
        "verboseLabel": "Common stock, par value (in dollars per share)"
       }
      }
     },
     "localname": "CommonStockParOrStatedValuePerShare",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheetsParenthetical",
      "http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_CommonStockSharesAuthorized": {
     "auth_ref": [
      "r5"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The maximum number of common shares permitted to be issued by an entity's charter and bylaws.",
        "label": "Common Stock, Shares Authorized",
        "verboseLabel": "Common stock, shares authorized (in shares)"
       }
      }
     },
     "localname": "CommonStockSharesAuthorized",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheetsParenthetical"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockSharesIssued": {
     "auth_ref": [
      "r5"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Total number of common shares of an entity that have been sold or granted to shareholders (includes common shares that were issued, repurchased and remain in the treasury). These shares represent capital invested by the firm's shareholders and owners, and may be all or only a portion of the number of shares authorized. Shares issued include shares outstanding and shares held in the treasury.",
        "label": "Common Stock, Shares, Issued",
        "verboseLabel": "Common stock, shares issued (in shares)"
       }
      }
     },
     "localname": "CommonStockSharesIssued",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheetsParenthetical"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockSharesOutstanding": {
     "auth_ref": [
      "r5",
      "r92"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation.",
        "label": "Common Stock, Shares, Outstanding",
        "periodEndLabel": "Ending balance, shares",
        "periodStartLabel": "Beginning balance, shares",
        "verboseLabel": "Common stock, shares outstanding (in shares)"
       }
      }
     },
     "localname": "CommonStockSharesOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheetsParenthetical",
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockValue": {
     "auth_ref": [
      "r5",
      "r576"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 2.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Aggregate par or stated value of issued nonredeemable common stock (or common stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable common shares, par value and other disclosure concepts are in another section within stockholders' equity.",
        "label": "Common Stock, Value, Issued",
        "verboseLabel": "Common stock, $0.025 par value; 100,000 shares authorized; 65,735 shares issued and outstanding as of December 31, 2022, and 64,274 shares issued and outstanding as of December 31, 2021"
       }
      }
     },
     "localname": "CommonStockValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CompensationAndEmployeeBenefitPlansTextBlock": {
     "auth_ref": [
      "r96",
      "r97",
      "r98",
      "r112"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for an entity's employee compensation and benefit plans, including, but not limited to, postemployment and postretirement benefit plans, defined benefit pension plans, defined contribution plans, non-qualified and supplemental benefit plans, deferred compensation, share-based compensation, life insurance, severance, health care, unemployment and other benefit plans.",
        "label": "Compensation and Employee Benefit Plans [Text Block]",
        "terseLabel": "Employee Benefit Plan"
       }
      }
     },
     "localname": "CompensationAndEmployeeBenefitPlansTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/EmployeeBenefitPlan"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CompensationAndRetirementDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Retirement Benefits [Abstract]",
        "terseLabel": "Retirement Benefits [Abstract]"
       }
      }
     },
     "localname": "CompensationAndRetirementDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_ComprehensiveIncomeNetOfTax": {
     "auth_ref": [
      "r28",
      "r183",
      "r185",
      "r191",
      "r512",
      "r518"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners.",
        "label": "Comprehensive Income (Loss), Net of Tax, Attributable to Parent",
        "totalLabel": "Comprehensive income"
       }
      }
     },
     "localname": "ComprehensiveIncomeNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ComprehensiveIncomeNoteTextBlock": {
     "auth_ref": [
      "r40",
      "r190",
      "r511",
      "r517"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for comprehensive income, which includes, but is not limited to, 1) the amount of income tax expense or benefit allocated to each component of other comprehensive income, including reclassification adjustments, 2) the reclassification adjustments for each classification of other comprehensive income and 3) the ending accumulated balances for each component of comprehensive income.",
        "label": "Comprehensive Income (Loss) Note [Text Block]",
        "terseLabel": "Accumulated Other Comprehensive Loss"
       }
      }
     },
     "localname": "ComprehensiveIncomeNoteTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/AccumulatedOtherComprehensiveLoss"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ComputerEquipmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Long lived, depreciable assets that are used in the creation, maintenance and utilization of information systems.",
        "label": "Computer Equipment [Member]",
        "terseLabel": "Computer equipment"
       }
      }
     },
     "localname": "ComputerEquipmentMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ComputerSoftwareIntangibleAssetMember": {
     "auth_ref": [
      "r574",
      "r623",
      "r624"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Collection of computer programs and related data that provide instructions to a computer, for example, but not limited to, application program, control module or operating system, that perform one or more particular functions or tasks.",
        "label": "Computer Software, Intangible Asset [Member]",
        "terseLabel": "Purchased Software",
        "verboseLabel": "Licensed Software"
       }
      }
     },
     "localname": "ComputerSoftwareIntangibleAssetMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ConcentrationRiskBenchmarkDomain": {
     "auth_ref": [
      "r56",
      "r57",
      "r134",
      "r135",
      "r268",
      "r532"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The denominator in a calculation of a disclosed concentration risk percentage.",
        "label": "Concentration Risk Benchmark [Domain]",
        "terseLabel": "Concentration Risk Benchmark [Domain]"
       }
      }
     },
     "localname": "ConcentrationRiskBenchmarkDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ConcentrationRiskByBenchmarkAxis": {
     "auth_ref": [
      "r56",
      "r57",
      "r134",
      "r135",
      "r268",
      "r528",
      "r532"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by benchmark of concentration risk.",
        "label": "Concentration Risk Benchmark [Axis]",
        "terseLabel": "Concentration Risk Benchmark [Axis]"
       }
      }
     },
     "localname": "ConcentrationRiskByBenchmarkAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskByTypeAxis": {
     "auth_ref": [
      "r56",
      "r57",
      "r134",
      "r135",
      "r268",
      "r532",
      "r702"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of concentration risk, for example, but not limited to, asset, liability, net assets, geographic, customer, employees, supplier, lender.",
        "label": "Concentration Risk Type [Axis]",
        "terseLabel": "Concentration Risk Type [Axis]"
       }
      }
     },
     "localname": "ConcentrationRiskByTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskCreditRisk": {
     "auth_ref": [
      "r148",
      "r242"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for credit risk.",
        "label": "Concentration Risk, Credit Risk, Policy [Policy Text Block]",
        "terseLabel": "Credit Risk and Inventory Supplier Concentrations"
       }
      }
     },
     "localname": "ConcentrationRiskCreditRisk",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ConcentrationRiskLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Concentration Risk [Line Items]",
        "terseLabel": "Concentration Risk [Line Items]"
       }
      }
     },
     "localname": "ConcentrationRiskLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskPercentage1": {
     "auth_ref": [
      "r56",
      "r57",
      "r134",
      "r135",
      "r268"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "For an entity that discloses a concentration risk in relation to quantitative amount, which serves as the \"benchmark\" (or denominator) in the equation, this concept represents the concentration percentage derived from the division.",
        "label": "Concentration Risk, Percentage",
        "terseLabel": "Concentration of credit risk, percentage"
       }
      }
     },
     "localname": "ConcentrationRiskPercentage1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ConcentrationRiskTable": {
     "auth_ref": [
      "r54",
      "r56",
      "r57",
      "r58",
      "r134",
      "r136",
      "r532"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Describes the nature of a concentration, a benchmark to which it is compared, and the percentage that the risk is to the benchmark.",
        "label": "Concentration Risk [Table]",
        "terseLabel": "Concentration Risk [Table]"
       }
      }
     },
     "localname": "ConcentrationRiskTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskTypeDomain": {
     "auth_ref": [
      "r56",
      "r57",
      "r134",
      "r135",
      "r268",
      "r532"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "For an entity that discloses a concentration risk as a percentage of some financial balance or benchmark, identifies the type (for example, asset, liability, net assets, geographic, customer, employees, supplier, lender) of the concentration.",
        "label": "Concentration Risk Type [Domain]",
        "terseLabel": "Concentration Risk Type [Domain]"
       }
      }
     },
     "localname": "ConcentrationRiskTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ContractWithCustomerAssetNet": {
     "auth_ref": [
      "r331",
      "r333",
      "r346"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after allowance for credit loss, of right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time.",
        "label": "Contract with Customer, Asset, after Allowance for Credit Loss",
        "terseLabel": "Contract with customer, asset"
       }
      }
     },
     "localname": "ContractWithCustomerAssetNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersContractAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ContractWithCustomerLiability": {
     "auth_ref": [
      "r331",
      "r332",
      "r346"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable.",
        "label": "Contract with Customer, Liability",
        "terseLabel": "Deferred revenue"
       }
      }
     },
     "localname": "ContractWithCustomerLiability",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersContractAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ContractWithCustomerLiabilityCurrent": {
     "auth_ref": [
      "r331",
      "r332",
      "r346"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 2.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as current.",
        "label": "Contract with Customer, Liability, Current",
        "verboseLabel": "Deferred revenue"
       }
      }
     },
     "localname": "ContractWithCustomerLiabilityCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ContractWithCustomerLiabilityNoncurrent": {
     "auth_ref": [
      "r331",
      "r332",
      "r346"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 2.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as noncurrent.",
        "label": "Contract with Customer, Liability, Noncurrent",
        "terseLabel": "Long-term portion of deferred revenue"
       }
      }
     },
     "localname": "ContractWithCustomerLiabilityNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ContractWithCustomerLiabilityRevenueRecognized": {
     "auth_ref": [
      "r347"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of revenue recognized that was previously included in balance of obligation to transfer good or service to customer for which consideration from customer has been received or is due.",
        "label": "Contract with Customer, Liability, Revenue Recognized",
        "terseLabel": "Contract with customer, liability, revenue recognized"
       }
      }
     },
     "localname": "ContractWithCustomerLiabilityRevenueRecognized",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersContractAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CorporateDebtSecuritiesMember": {
     "auth_ref": [
      "r568",
      "r570",
      "r701"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Debt securities issued by domestic or foreign corporate business, banks and other entities with a promise of repayment.",
        "label": "Corporate Debt Securities [Member]",
        "terseLabel": "Corporate debt securities"
       }
      }
     },
     "localname": "CorporateDebtSecuritiesMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails",
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CostOfGoodsAndServicesSold": {
     "auth_ref": [
      "r34",
      "r506"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 2.0,
       "parentTag": "us-gaap_GrossProfit",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate costs related to goods produced and sold and services rendered by an entity during the reporting period. This excludes costs incurred during the reporting period related to financial services rendered and other revenue generating activities.",
        "label": "Cost of Goods and Services Sold",
        "terseLabel": "Cost of revenue"
       }
      }
     },
     "localname": "CostOfGoodsAndServicesSold",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CostOfSalesPolicyTextBlock": {
     "auth_ref": [
      "r640"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for cost of product sold and service rendered.",
        "label": "Cost of Goods and Service [Policy Text Block]",
        "terseLabel": "Cost of Revenue"
       }
      }
     },
     "localname": "CostOfSalesPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CurrentFederalTaxExpenseBenefit": {
     "auth_ref": [
      "r601",
      "r674",
      "r676"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_CurrentIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current federal tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, current national tax expense (benefit) for non-US (United States of America) jurisdiction.",
        "label": "Current Federal Tax Expense (Benefit)",
        "terseLabel": "Federal"
       }
      }
     },
     "localname": "CurrentFederalTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentForeignTaxExpenseBenefit": {
     "auth_ref": [
      "r601",
      "r674"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_CurrentIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Current Foreign Tax Expense (Benefit)",
        "terseLabel": "Foreign"
       }
      }
     },
     "localname": "CurrentForeignTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r123",
      "r419",
      "r427",
      "r601"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current income tax expense (benefit) pertaining to taxable income (loss) from continuing operations.",
        "label": "Current Income Tax Expense (Benefit)",
        "totalLabel": "Current income tax"
       }
      }
     },
     "localname": "CurrentIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current Income Tax Expense (Benefit), Continuing Operations [Abstract]",
        "terseLabel": "Current:"
       }
      }
     },
     "localname": "CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_CurrentStateAndLocalTaxExpenseBenefit": {
     "auth_ref": [
      "r601",
      "r674",
      "r676"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_CurrentIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current state and local tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, current regional, territorial, and provincial tax expense (benefit) for non-US (United States of America) jurisdiction.",
        "label": "Current State and Local Tax Expense (Benefit)",
        "terseLabel": "State"
       }
      }
     },
     "localname": "CurrentStateAndLocalTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CustomerConcentrationRiskMember": {
     "auth_ref": [
      "r55",
      "r268"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Reflects the percentage that revenues in the period from one or more significant customers is to net revenues, as defined by the entity, such as total net revenues, product line revenues, segment revenues. The risk is the materially adverse effects of loss of a significant customer.",
        "label": "Customer Concentration Risk [Member]",
        "terseLabel": "Customer Concentration Risk"
       }
      }
     },
     "localname": "CustomerConcentrationRiskMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent": {
     "auth_ref": [
      "r618"
     ],
     "calculation": {
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amortized cost excluding accrued interest, after allowance for credit loss, of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as current.",
        "label": "Debt Securities, Available-for-Sale, Amortized Cost, Excluding Accrued Interest, after Allowance for Credit Loss, Current",
        "totalLabel": "Amortized Cost"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent": {
     "auth_ref": [
      "r618"
     ],
     "calculation": {
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails": {
       "order": 1.0,
       "parentTag": "calx_CashCashEquivalentsAndMarketableSecurities",
       "weight": 1.0
      },
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLossCurrent",
       "weight": 1.0
      },
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 5.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      },
      "http://www.calix.com/role/FairValueMeasurementsDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_AssetsFairValueDisclosure",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount excluding accrued interest, of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as current.",
        "label": "Debt Securities, Available-for-Sale, Excluding Accrued Interest, Current",
        "terseLabel": "Marketable securities",
        "verboseLabel": "Marketable securities"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails",
      "http://www.calix.com/role/ConsolidatedBalanceSheets",
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleTable": {
     "auth_ref": [
      "r275"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of information about investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).",
        "label": "Debt Securities, Available-for-Sale [Table]",
        "terseLabel": "Debt Securities, Available-for-sale [Table]"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock": {
     "auth_ref": [
      "r613"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).",
        "label": "Debt Securities, Available-for-Sale [Table Text Block]",
        "terseLabel": "Debt Securities, Available-for-Sale"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleTerm": {
     "auth_ref": [
      "r679"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Period between issuance and maturity of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Debt Securities, Available-for-Sale, Term",
        "terseLabel": "Marketable securities, term"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleTerm",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the amounts paid in advance for capitalized costs that will be expensed with the passage of time or the occurrence of a triggering event, and will be charged against earnings within one year or the normal operating cycle, if longer; the aggregate carrying amount of current assets, not separately presented elsewhere in the balance sheet; and other deferred costs.",
        "label": "Deferred Costs, Capitalized, Prepaid, and Other Assets Disclosure [Table Text Block]",
        "terseLabel": "Deferred Costs, Capitalized, Prepaid, and Other Assets Disclosure"
       }
      }
     },
     "localname": "DeferredCostsCapitalizedPrepaidAndOtherAssetsDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DeferredFederalIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r601",
      "r675",
      "r676"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred federal tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, deferred national tax expense (benefit) for non-US (United States of America) jurisdiction.",
        "label": "Deferred Federal Income Tax Expense (Benefit)",
        "terseLabel": "Federal"
       }
      }
     },
     "localname": "DeferredFederalIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredForeignIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r123",
      "r601",
      "r675"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_DeferredIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Deferred Foreign Income Tax Expense (Benefit)",
        "terseLabel": "Foreign"
       }
      }
     },
     "localname": "DeferredForeignIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxAssetsNet": {
     "auth_ref": [
      "r401",
      "r402"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 3.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, with jurisdictional netting.",
        "label": "Deferred Income Tax Assets, Net",
        "terseLabel": "Deferred tax assets"
       }
      }
     },
     "localname": "DeferredIncomeTaxAssetsNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r48",
      "r123",
      "r420",
      "r426",
      "r427",
      "r601"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Deferred Income Tax Expense (Benefit)",
        "totalLabel": "Deferred income tax"
       }
      }
     },
     "localname": "DeferredIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred Income Tax Expense (Benefit), Continuing Operations [Abstract]",
        "terseLabel": "Deferred:"
       }
      }
     },
     "localname": "DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredIncomeTaxLiabilities": {
     "auth_ref": [
      "r2",
      "r3",
      "r140",
      "r149",
      "r413"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredTaxAssetsLiabilitiesNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences.",
        "label": "Deferred Tax Liabilities, Gross",
        "negatedTotalLabel": "Total deferred tax liabilities"
       }
      }
     },
     "localname": "DeferredIncomeTaxLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxesAndTaxCredits": {
     "auth_ref": [
      "r49"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 11.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred income tax expense (benefit) and income tax credits.",
        "label": "Deferred Income Taxes and Tax Credits",
        "terseLabel": "Deferred income taxes"
       }
      }
     },
     "localname": "DeferredIncomeTaxesAndTaxCredits",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r601",
      "r675",
      "r676"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_DeferredIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred state and local tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, deferred regional, territorial, and provincial tax expense (benefit) for non-US (United States of America) jurisdiction.",
        "label": "Deferred State and Local Income Tax Expense (Benefit)",
        "terseLabel": "State"
       }
      }
     },
     "localname": "DeferredStateAndLocalIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsDeferredIncome": {
     "auth_ref": [
      "r121",
      "r673"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails": {
       "order": 4.0,
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from deferred income.",
        "label": "Deferred Tax Assets, Deferred Income",
        "terseLabel": "Deferred revenue"
       }
      }
     },
     "localname": "DeferredTaxAssetsDeferredIncome",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsGross": {
     "auth_ref": [
      "r414"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards.",
        "label": "Deferred Tax Assets, Gross",
        "totalLabel": "Gross deferred tax assets"
       }
      }
     },
     "localname": "DeferredTaxAssetsGross",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsGrossAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred Tax Assets, Gross [Abstract]",
        "terseLabel": "Deferred tax assets:"
       }
      }
     },
     "localname": "DeferredTaxAssetsGrossAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredTaxAssetsLiabilitiesNet": {
     "auth_ref": [
      "r672"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, without jurisdictional netting.",
        "label": "Deferred Tax Assets, Net",
        "totalLabel": "Deferred tax assets"
       }
      }
     },
     "localname": "DeferredTaxAssetsLiabilitiesNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsNet": {
     "auth_ref": [
      "r672"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_DeferredTaxAssetsLiabilitiesNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards.",
        "label": "Deferred Tax Assets, Net of Valuation Allowance",
        "totalLabel": "Total deferred tax assets"
       }
      }
     },
     "localname": "DeferredTaxAssetsNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsOperatingLossCarryforwards": {
     "auth_ref": [
      "r121",
      "r673"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible operating loss carryforwards.",
        "label": "Deferred Tax Assets, Operating Loss Carryforwards",
        "terseLabel": "Net operating loss carryforwards"
       }
      }
     },
     "localname": "DeferredTaxAssetsOperatingLossCarryforwards",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost": {
     "auth_ref": [
      "r121",
      "r673"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails": {
       "order": 5.0,
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from share-based compensation.",
        "label": "Deferred Tax Assets, Tax Deferred Expense, Compensation and Benefits, Share-Based Compensation Cost",
        "terseLabel": "Stock-based compensation"
       }
      }
     },
     "localname": "DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities": {
     "auth_ref": [
      "r121",
      "r673"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from accrued liabilities.",
        "label": "Deferred Tax Assets, Tax Deferred Expense, Reserves and Accruals, Accrued Liabilities",
        "terseLabel": "Accruals and reserves"
       }
      }
     },
     "localname": "DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsValuationAllowance": {
     "auth_ref": [
      "r415"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax assets for which it is more likely than not that a tax benefit will not be realized.",
        "label": "Deferred Tax Assets, Valuation Allowance",
        "negatedTerseLabel": "Valuation allowance",
        "terseLabel": "Valuation allowance"
       }
      }
     },
     "localname": "DeferredTaxAssetsValuationAllowance",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail",
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails",
      "http://www.calix.com/role/IncomeTaxesTextualDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets": {
     "auth_ref": [
      "r121",
      "r673"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences from intangible assets other than goodwill.",
        "label": "Deferred Tax Liabilities, Intangible Assets",
        "negatedTerseLabel": "Intangible assets"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesNetAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred Tax Liabilities, Net [Abstract]",
        "terseLabel": "Deferred tax liabilities:"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesNetAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment": {
     "auth_ref": [
      "r121",
      "r673"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences from property, plant, and equipment.",
        "label": "Deferred Tax Liabilities, Property, Plant and Equipment",
        "negatedTerseLabel": "Fixed assets"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedContributionPlanCostRecognized": {
     "auth_ref": [
      "r356"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cost for defined contribution plan.",
        "label": "Defined Contribution Plan, Cost",
        "terseLabel": "Company matching contributions, 401(K) Plan"
       }
      }
     },
     "localname": "DefinedContributionPlanCostRecognized",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/EmployeeBenefitPlanDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DepositsAssetsCurrent": {
     "auth_ref": [
      "r591"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_PrepaidExpenseAndOtherAssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying value of amounts transferred to third parties for security purposes that are expected to be returned or applied towards payment within one year or during the operating cycle, if shorter.",
        "label": "Deposits Assets, Current",
        "terseLabel": "Supplier deposits"
       }
      }
     },
     "localname": "DepositsAssetsCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_Depreciation": {
     "auth_ref": [
      "r48",
      "r76"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 1.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of expense recognized in the current period that reflects the allocation of the cost of tangible assets over the assets' useful lives. Includes production and non-production related depreciation.",
        "label": "Depreciation",
        "verboseLabel": "Depreciation and amortization"
       }
      }
     },
     "localname": "Depreciation",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails",
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock": {
     "auth_ref": [
      "r99",
      "r107"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of share-based payment arrangement.",
        "label": "Disclosure of Share-Based Compensation Arrangements by Share-Based Payment Award [Table Text Block]",
        "terseLabel": "Disclosure of Share-based Compensation Arrangements by Share-based Payment Award"
       }
      }
     },
     "localname": "DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DomesticCountryMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Designated tax department of the government that is entitled to levy and collect income taxes from the entity in its country of domicile.",
        "label": "Domestic Tax Authority [Member]",
        "terseLabel": "U.S. Federal"
       }
      }
     },
     "localname": "DomesticCountryMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTextualDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EarningsPerShareAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Earnings Per Share [Abstract]",
        "terseLabel": "Earnings Per Share [Abstract]"
       }
      }
     },
     "localname": "EarningsPerShareAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerShareBasic": {
     "auth_ref": [
      "r192",
      "r215",
      "r216",
      "r217",
      "r218",
      "r219",
      "r223",
      "r225",
      "r230",
      "r231",
      "r232",
      "r236",
      "r441",
      "r442",
      "r513",
      "r519",
      "r558"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.",
        "label": "Earnings Per Share, Basic",
        "terseLabel": "Basic (in dollars per share)",
        "verboseLabel": "Basic net income (loss) per common share (in dollars per share)"
       }
      }
     },
     "localname": "EarningsPerShareBasic",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss",
      "http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_EarningsPerShareBasicAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Earnings Per Share, Basic [Abstract]",
        "verboseLabel": "Net income per common share:"
       }
      }
     },
     "localname": "EarningsPerShareBasicAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss",
      "http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerShareDiluted": {
     "auth_ref": [
      "r192",
      "r215",
      "r216",
      "r217",
      "r218",
      "r219",
      "r225",
      "r230",
      "r231",
      "r232",
      "r236",
      "r441",
      "r442",
      "r513",
      "r519",
      "r558"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period.",
        "label": "Earnings Per Share, Diluted",
        "terseLabel": "Diluted (in dollars per share)",
        "verboseLabel": "Diluted net income (loss) per common share (in dollars per share)"
       }
      }
     },
     "localname": "EarningsPerShareDiluted",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss",
      "http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_EarningsPerShareDilutedOtherDisclosuresAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Earnings Per Share, Diluted, Other Disclosure [Abstract]",
        "verboseLabel": "Weighted-average number of shares used to compute net income per common share:"
       }
      }
     },
     "localname": "EarningsPerShareDilutedOtherDisclosuresAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerShareTextBlock": {
     "auth_ref": [
      "r233",
      "r234",
      "r235",
      "r237"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for earnings per share.",
        "label": "Earnings Per Share [Text Block]",
        "verboseLabel": "Net Income Per Common Share"
       }
      }
     },
     "localname": "EarningsPerShareTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/NetIncomePerCommonShare"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents": {
     "auth_ref": [
      "r451"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 1.0,
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) from effect of exchange rate changes on cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; held in foreign currencies. Excludes amounts for disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.",
        "label": "Effect of Exchange Rate on Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Continuing Operations",
        "verboseLabel": "Effect of exchange rate changes on cash and cash equivalents"
       }
      }
     },
     "localname": "EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateContinuingOperations": {
     "auth_ref": [
      "r404"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.",
        "label": "Effective Income Tax Rate Reconciliation, Percent",
        "totalLabel": "Total"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateContinuingOperations",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate": {
     "auth_ref": [
      "r201",
      "r404",
      "r429"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of domestic federal statutory tax rate applicable to pretax income (loss).",
        "label": "Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent",
        "terseLabel": "Federal statutory rate"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationBeatPercent": {
     "auth_ref": [
      "r671"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails": {
       "order": 12.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of reported income tax expense from difference to expected income tax expense (benefit) computed by applying domestic federal statutory income tax rate to pretax income (loss) from continuing operations, attributable to base erosion and anti-abuse tax (BEAT).",
        "label": "Effective Income Tax Rate Reconciliation, BEAT, Percent",
        "terseLabel": "Base erosion anti-abuse tax"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationBeatPercent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance": {
     "auth_ref": [
      "r671",
      "r677"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails": {
       "order": 9.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to changes in the valuation allowance for deferred tax assets.",
        "label": "Effective Income Tax Rate Reconciliation, Change in Deferred Tax Assets Valuation Allowance, Percent",
        "terseLabel": "Valuation allowance"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationFdiiPercent": {
     "auth_ref": [
      "r671"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails": {
       "order": 5.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of reported income tax benefit from difference to income tax expense (benefit) computed by applying domestic federal statutory income tax rate to pretax income (loss) from continuing operations, attributable to foreign-derived intangible income (FDII).",
        "label": "Effective Income Tax Rate Reconciliation, FDII, Percent",
        "terseLabel": "Foreign income inclusion"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationFdiiPercent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential": {
     "auth_ref": [
      "r671",
      "r677"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to statutory income tax expense (benefit) outside of the country of domicile.",
        "label": "Effective Income Tax Rate Reconciliation, Foreign Income Tax Rate Differential, Percent",
        "terseLabel": "Foreign operations"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther": {
     "auth_ref": [
      "r671",
      "r677"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails": {
       "order": 7.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to other nondeductible expenses.",
        "label": "Effective Income Tax Rate Reconciliation, Nondeductible Expense, Other, Percent",
        "terseLabel": "Other permanent items"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOther",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment": {
     "auth_ref": [
      "r671",
      "r677"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails": {
       "order": 11.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to research and development expense.",
        "label": "Effective Income Tax Rate Reconciliation, Nondeductible Expense, Research and Development, Percent",
        "terseLabel": "R&amp;D tax credits"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationNondeductibleExpenseResearchAndDevelopment",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost": {
     "auth_ref": [
      "r671",
      "r677"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails": {
       "order": 6.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying domestic federal statutory income tax rate to pretax income (loss) from continuing operation, attributable to nondeductible expense for share-based payment arrangement.",
        "label": "Effective Income Tax Rate Reconciliation, Nondeductible Expense, Share-Based Payment Arrangement, Percent",
        "terseLabel": "Stock-based compensation"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationNondeductibleExpenseShareBasedCompensationCost",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes": {
     "auth_ref": [
      "r671",
      "r677"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails": {
       "order": 8.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to revisions of previously reported income tax expense.",
        "label": "Effective Income Tax Rate Reconciliation, Prior Year Income Taxes, Percent",
        "terseLabel": "Tax true-up"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationPriorYearIncomeTaxes",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes": {
     "auth_ref": [
      "r671",
      "r677"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to state and local income tax expense (benefit), net of federal tax expense (benefit).",
        "label": "Effective Income Tax Rate Reconciliation, State and Local Income Taxes, Percent",
        "terseLabel": "Impact of state taxes"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch": {
     "auth_ref": [
      "r671",
      "r677"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails": {
       "order": 4.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": -1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to research tax credit.",
        "label": "Effective Income Tax Rate Reconciliation, Tax Credit, Research, Percent",
        "negatedTerseLabel": "R&amp;D tax credits"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationTaxCreditsResearch",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesIncomeTaxRateReconciliationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EmployeeRelatedLiabilitiesCurrent": {
     "auth_ref": [
      "r16"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails": {
       "order": 8.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Total of the carrying values as of the balance sheet date of obligations incurred through that date and payable for obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "Employee-related Liabilities, Current",
        "terseLabel": "Compensation and related benefits"
       }
      }
     },
     "localname": "EmployeeRelatedLiabilitiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized": {
     "auth_ref": [
      "r392"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cost not yet recognized for nonvested award under share-based payment arrangement.",
        "label": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount",
        "verboseLabel": "Unrecognized stock-based compensation expense"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1": {
     "auth_ref": [
      "r392"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted-average period over which cost not yet recognized is expected to be recognized for award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition",
        "verboseLabel": "Weighted-average amortization period"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails",
      "http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions": {
     "auth_ref": [
      "r669"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cost to be recognized for nonvested award under share-based payment arrangement. Excludes share and unit options.",
        "label": "Share-Based Payment Arrangement, Nonvested Award, Excluding Option, Cost Not yet Recognized, Amount",
        "terseLabel": "Unrecognized stock-based compensation expense"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions": {
     "auth_ref": [
      "r669"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cost to be recognized for option under share-based payment arrangement.",
        "label": "Share-Based Payment Arrangement, Nonvested Award, Option, Cost Not yet Recognized, Amount",
        "terseLabel": "Unrecognized stock-based compensation expense"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense": {
     "auth_ref": [
      "r391"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of tax benefit for recognition of expense of award under share-based payment arrangement.",
        "label": "Share-Based Payment Arrangement, Expense, Tax Benefit",
        "terseLabel": "Share-Based Payment Arrangement, Expense, Tax Benefit"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeStockMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "An Employee Stock Purchase Plan is a tax-efficient means by which employees of a corporation can purchase the corporation's stock.",
        "label": "Employee Stock [Member]",
        "terseLabel": "ESPP"
       }
      }
     },
     "localname": "EmployeeStockMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityAssumptionsDetails",
      "http://www.calix.com/role/StockholdersEquityESPPDetails",
      "http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails",
      "http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails",
      "http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EmployeeStockOptionMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-based payment arrangement granting right, subject to vesting and other restrictions, to purchase or sell certain number of shares at predetermined price for specified period of time.",
        "label": "Share-Based Payment Arrangement, Option [Member]",
        "terseLabel": "Stock Options"
       }
      }
     },
     "localname": "EmployeeStockOptionMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityAssumptionsDetails",
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails",
      "http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EquipmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tangible personal property used to produce goods and services.",
        "label": "Equipment [Member]",
        "terseLabel": "Test Equipment",
        "verboseLabel": "Test equipment"
       }
      }
     },
     "localname": "EquipmentMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Equity [Abstract]",
        "terseLabel": "Equity [Abstract]"
       }
      }
     },
     "localname": "EquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_EquityComponentDomain": {
     "auth_ref": [
      "r92",
      "r159",
      "r187",
      "r188",
      "r189",
      "r210",
      "r211",
      "r212",
      "r214",
      "r220",
      "r222",
      "r239",
      "r277",
      "r330",
      "r393",
      "r394",
      "r395",
      "r422",
      "r423",
      "r440",
      "r452",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457",
      "r470",
      "r522",
      "r523",
      "r524"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Components of equity are the parts of the total Equity balance including that which is allocated to common, preferred, treasury stock, retained earnings, etc.",
        "label": "Equity Component [Domain]",
        "terseLabel": "Equity Component [Domain]"
       }
      }
     },
     "localname": "EquityComponentDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails",
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]",
        "terseLabel": "Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]"
       }
      }
     },
     "localname": "FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable": {
     "auth_ref": [
      "r443",
      "r444",
      "r448"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of information about asset and liability measured at fair value on recurring and nonrecurring basis.",
        "label": "Fair Value, Recurring and Nonrecurring [Table]",
        "terseLabel": "Fair Value, Recurring and Nonrecurring [Table]"
       }
      }
     },
     "localname": "FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock": {
     "auth_ref": [
      "r130",
      "r131"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of assets, including [financial] instruments measured at fair value that are classified in stockholders' equity, if any, by class that are measured at fair value on a recurring basis. The disclosures contemplated herein include the fair value measurements at the reporting date by the level within the fair value hierarchy in which the fair value measurements in their entirety fall, segregating fair value measurements using quoted prices in active markets for identical assets (Level 1), significant other observable inputs (Level 2), and significant unobservable inputs (Level 3).",
        "label": "Fair Value, Assets Measured on Recurring Basis [Table Text Block]",
        "terseLabel": "Fair Value, Assets Measured on Recurring Basis"
       }
      }
     },
     "localname": "FairValueAssetsMeasuredOnRecurringBasisTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/FairValueMeasurementsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FairValueByFairValueHierarchyLevelAxis": {
     "auth_ref": [
      "r326",
      "r350",
      "r351",
      "r352",
      "r353",
      "r354",
      "r355",
      "r444",
      "r476",
      "r477",
      "r478",
      "r563",
      "r564",
      "r568",
      "r569",
      "r570"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by level within fair value hierarchy and fair value measured at net asset value per share as practical expedient.",
        "label": "Fair Value Hierarchy and NAV [Axis]",
        "terseLabel": "Fair Value Hierarchy and NAV [Axis]"
       }
      }
     },
     "localname": "FairValueByFairValueHierarchyLevelAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueByMeasurementFrequencyAxis": {
     "auth_ref": [
      "r443",
      "r444",
      "r445",
      "r446",
      "r449"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by measurement frequency.",
        "label": "Measurement Frequency [Axis]",
        "terseLabel": "Measurement Frequency [Axis]"
       }
      }
     },
     "localname": "FairValueByMeasurementFrequencyAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueDisclosuresAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Fair Value Disclosures [Abstract]",
        "terseLabel": "Fair Value Disclosures [Abstract]"
       }
      }
     },
     "localname": "FairValueDisclosuresAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueDisclosuresTextBlock": {
     "auth_ref": [
      "r447"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for the fair value of financial instruments (as defined), including financial assets and financial liabilities (collectively, as defined), and the measurements of those instruments as well as disclosures related to the fair value of non-financial assets and liabilities. Such disclosures about the financial instruments, assets, and liabilities would include: (1) the fair value of the required items together with their carrying amounts (as appropriate); (2) for items for which it is not practicable to estimate fair value, disclosure would include: (a) information pertinent to estimating fair value (including, carrying amount, effective interest rate, and maturity, and (b) the reasons why it is not practicable to estimate fair value; (3) significant concentrations of credit risk including: (a) information about the activity, region, or economic characteristics identifying a concentration, (b) the maximum amount of loss the entity is exposed to based on the gross fair value of the related item, (c) policy for requiring collateral or other security and information as to accessing such collateral or security, and (d) the nature and brief description of such collateral or security; (4) quantitative information about market risks and how such risks are managed; (5) for items measured on both a recurring and nonrecurring basis information regarding the inputs used to develop the fair value measurement; and (6) for items presented in the financial statement for which fair value measurement is elected: (a) information necessary to understand the reasons for the election, (b) discussion of the effect of fair value changes on earnings, (c) a description of [similar groups] items for which the election is made and the relation thereof to the balance sheet, the aggregate carrying value of items included in the balance sheet that are not eligible for the election; (7) all other required (as defined) and desired information.",
        "label": "Fair Value Disclosures [Text Block]",
        "verboseLabel": "Fair Value Measurements"
       }
      }
     },
     "localname": "FairValueDisclosuresTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/FairValueMeasurements"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FairValueInputsLevel1Member": {
     "auth_ref": [
      "r326",
      "r350",
      "r355",
      "r444",
      "r476",
      "r568",
      "r569",
      "r570"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Quoted prices in active markets for identical assets or liabilities that the reporting entity can access at the measurement date.",
        "label": "Fair Value, Inputs, Level 1 [Member]",
        "terseLabel": "Level 1"
       }
      }
     },
     "localname": "FairValueInputsLevel1Member",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueInputsLevel2Member": {
     "auth_ref": [
      "r326",
      "r350",
      "r355",
      "r444",
      "r477",
      "r563",
      "r564",
      "r568",
      "r569",
      "r570"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Inputs other than quoted prices included within level 1 that are observable for an asset or liability, either directly or indirectly, including, but not limited to, quoted prices for similar assets or liabilities in active markets, or quoted prices for identical or similar assets or liabilities in inactive markets.",
        "label": "Fair Value, Inputs, Level 2 [Member]",
        "terseLabel": "Level 2"
       }
      }
     },
     "localname": "FairValueInputsLevel2Member",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueMeasurementFrequencyDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Measurement frequency.",
        "label": "Measurement Frequency [Domain]",
        "terseLabel": "Measurement Frequency [Domain]"
       }
      }
     },
     "localname": "FairValueMeasurementFrequencyDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueMeasurementsFairValueHierarchyDomain": {
     "auth_ref": [
      "r326",
      "r350",
      "r351",
      "r352",
      "r353",
      "r354",
      "r355",
      "r476",
      "r477",
      "r478",
      "r563",
      "r564",
      "r568",
      "r569",
      "r570"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Categories used to prioritize the inputs to valuation techniques to measure fair value.",
        "label": "Fair Value Hierarchy and NAV [Domain]",
        "terseLabel": "Fair Value Hierarchy and NAV [Domain]"
       }
      }
     },
     "localname": "FairValueMeasurementsFairValueHierarchyDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueMeasurementsRecurringMember": {
     "auth_ref": [
      "r447",
      "r449"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Frequent fair value measurement. Includes, but is not limited to, fair value adjustment for impairment of asset, liability or equity, frequently measured at fair value.",
        "label": "Fair Value, Recurring [Member]",
        "terseLabel": "Fair Value, Recurring"
       }
      }
     },
     "localname": "FairValueMeasurementsRecurringMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueOfFinancialInstrumentsPolicy": {
     "auth_ref": [
      "r132",
      "r133"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for determining the fair value of financial instruments.",
        "label": "Fair Value of Financial Instruments, Policy [Policy Text Block]",
        "terseLabel": "Fair Value of Financial Instruments"
       }
      }
     },
     "localname": "FairValueOfFinancialInstrumentsPolicy",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FinancialInstrumentAxis": {
     "auth_ref": [
      "r273",
      "r274",
      "r279",
      "r280",
      "r281",
      "r282",
      "r283",
      "r284",
      "r285",
      "r286",
      "r327",
      "r329",
      "r439",
      "r473",
      "r474",
      "r475",
      "r476",
      "r477",
      "r478",
      "r479",
      "r480",
      "r481",
      "r482",
      "r483",
      "r484",
      "r485",
      "r486",
      "r487",
      "r488",
      "r489",
      "r490",
      "r491",
      "r492",
      "r493",
      "r494",
      "r495",
      "r496",
      "r497",
      "r498",
      "r499",
      "r500",
      "r501",
      "r502",
      "r561",
      "r614",
      "r615",
      "r616",
      "r703",
      "r704",
      "r705",
      "r706",
      "r707",
      "r708",
      "r709"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of financial instrument.",
        "label": "Financial Instrument [Axis]",
        "terseLabel": "Financial Instrument [Axis]"
       }
      }
     },
     "localname": "FinancialInstrumentAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails",
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis": {
     "auth_ref": [
      "r296",
      "r297",
      "r298",
      "r299",
      "r507",
      "r508"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by major type or class of finite-lived intangible assets.",
        "label": "Finite-Lived Intangible Assets by Major Class [Axis]",
        "terseLabel": "Finite-Lived Intangible Assets by Major Class [Axis]"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsByMajorClassAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Finite-Lived Intangible Assets [Line Items]",
        "terseLabel": "Finite-Lived Intangible Assets [Line Items]"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain": {
     "auth_ref": [
      "r73",
      "r75"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The major class of finite-lived intangible asset (for example, patents, trademarks, copyrights, etc.) A major class is composed of intangible assets that can be grouped together because they are similar, either by their nature or by their use in the operations of a company.",
        "label": "Finite-Lived Intangible Assets, Major Class Name [Domain]",
        "terseLabel": "Finite-Lived Intangible Assets, Major Class Name [Domain]"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsMajorClassNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FurnitureAndFixturesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Equipment commonly used in offices and stores that have no permanent connection to the structure of a building or utilities. Examples include, but are not limited to, desks, chairs, tables, and bookcases.",
        "label": "Furniture and Fixtures [Member]",
        "terseLabel": "Furniture and Fixtures",
        "verboseLabel": "Furniture and fixtures"
       }
      }
     },
     "localname": "FurnitureAndFixturesMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_GainLossOnDispositionOfAssets": {
     "auth_ref": [
      "r598",
      "r625",
      "r626"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 2.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of gain (loss) on sale or disposal of property, plant and equipment assets, excluding oil and gas property and timber property.",
        "label": "Gain (Loss) on Disposition of Property Plant Equipment, Excluding Oil and Gas Property and Timber Property",
        "negatedTerseLabel": "Asset retirements and write-downs"
       }
      }
     },
     "localname": "GainLossOnDispositionOfAssets",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GeneralAndAdministrativeExpense": {
     "auth_ref": [
      "r35"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 4.0,
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate total of expenses of managing and administering the affairs of an entity, including affiliates of the reporting entity, which are not directly or indirectly associated with the manufacture, sale or creation of a product or product line.",
        "label": "General and Administrative Expense",
        "verboseLabel": "General and administrative"
       }
      }
     },
     "localname": "GeneralAndAdministrativeExpense",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GeneralAndAdministrativeExpenseMember": {
     "auth_ref": [
      "r32"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Primary financial statement caption encompassing general and administrative expense.",
        "label": "General and Administrative Expense [Member]",
        "verboseLabel": "General and administrative"
       }
      }
     },
     "localname": "GeneralAndAdministrativeExpenseMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_Goodwill": {
     "auth_ref": [
      "r167",
      "r291",
      "r510",
      "r562",
      "r576",
      "r621",
      "r622"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 2.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.",
        "label": "Goodwill",
        "verboseLabel": "Goodwill"
       }
      }
     },
     "localname": "Goodwill",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy": {
     "auth_ref": [
      "r294",
      "r295",
      "r562"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for goodwill. This accounting policy also may address how an entity assesses and measures impairment of goodwill, how reporting units are determined, how goodwill is allocated to such units, and how the fair values of the reporting units are determined.",
        "label": "Goodwill and Intangible Assets, Goodwill, Policy [Policy Text Block]",
        "terseLabel": "Goodwill"
       }
      }
     },
     "localname": "GoodwillAndIntangibleAssetsGoodwillPolicy",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_GoodwillImpairmentLoss": {
     "auth_ref": [
      "r48",
      "r292",
      "r293",
      "r294",
      "r562"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of loss from the write-down of an asset representing the future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.",
        "label": "Goodwill, Impairment Loss",
        "terseLabel": "Goodwill, impairment loss"
       }
      }
     },
     "localname": "GoodwillImpairmentLoss",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GrossProfit": {
     "auth_ref": [
      "r33",
      "r199",
      "r251",
      "r254",
      "r259",
      "r262",
      "r276",
      "r317",
      "r318",
      "r319",
      "r320",
      "r321",
      "r322",
      "r323",
      "r324",
      "r325",
      "r450",
      "r560",
      "r633"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 1.0,
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity.",
        "label": "Gross Profit",
        "totalLabel": "Gross profit"
       }
      }
     },
     "localname": "GrossProfit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic": {
     "auth_ref": [
      "r200",
      "r428"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The portion of earnings or loss from continuing operations before income taxes that is attributable to domestic operations.",
        "label": "Income (Loss) from Continuing Operations before Income Taxes, Domestic",
        "terseLabel": "Domestic"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest": {
     "auth_ref": [
      "r30",
      "r138",
      "r146",
      "r157",
      "r251",
      "r254",
      "r259",
      "r262",
      "r514",
      "r560"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 1.0,
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": 1.0
      },
      "http://www.calix.com/role/IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest.",
        "label": "Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest",
        "totalLabel": "Income before income taxes"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss",
      "http://www.calix.com/role/IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign": {
     "auth_ref": [
      "r200",
      "r428"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The portion of earnings or loss from continuing operations before income taxes that is attributable to foreign operations, which is defined as Income or Loss generated from operations located outside the entity's country of domicile.",
        "label": "Income (Loss) from Continuing Operations before Income Taxes, Foreign",
        "terseLabel": "Foreign"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesLossbeforeProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeStatementAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Statement [Abstract]",
        "terseLabel": "Income Statement [Abstract]"
       }
      }
     },
     "localname": "IncomeStatementAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeStatementLocationAxis": {
     "auth_ref": [
      "r300",
      "r303"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by location in the income statement.",
        "label": "Income Statement Location [Axis]",
        "terseLabel": "Income Statement Location [Axis]"
       }
      }
     },
     "localname": "IncomeStatementLocationAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeStatementLocationDomain": {
     "auth_ref": [
      "r303"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Location in the income statement.",
        "label": "Income Statement Location [Domain]",
        "terseLabel": "Income Statement Location [Domain]"
       }
      }
     },
     "localname": "IncomeStatementLocationDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IncomeTaxAuthorityAxis": {
     "auth_ref": [
      "r116"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by tax jurisdiction.",
        "label": "Income Tax Authority [Axis]",
        "terseLabel": "Income Tax Authority [Axis]"
       }
      }
     },
     "localname": "IncomeTaxAuthorityAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTextualDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeTaxAuthorityDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Agency, division or body classification that levies income taxes, examines tax returns for compliance, or grants exemptions from or makes other decisions pertaining to income taxes.",
        "label": "Income Tax Authority [Domain]",
        "terseLabel": "Income Tax Authority [Domain]"
       }
      }
     },
     "localname": "IncomeTaxAuthorityDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTextualDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IncomeTaxDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Tax Disclosure [Abstract]",
        "terseLabel": "Income Tax Disclosure [Abstract]"
       }
      }
     },
     "localname": "IncomeTaxDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeTaxDisclosureTextBlock": {
     "auth_ref": [
      "r201",
      "r405",
      "r411",
      "r418",
      "r424",
      "r430",
      "r432",
      "r433",
      "r434"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for income taxes. Disclosures may include net deferred tax liability or asset recognized in an enterprise's statement of financial position, net change during the year in the total valuation allowance, approximate tax effect of each type of temporary difference and carryforward that gives rise to a significant portion of deferred tax liabilities and deferred tax assets, utilization of a tax carryback, and tax uncertainties information.",
        "label": "Income Tax Disclosure [Text Block]",
        "verboseLabel": "Income Taxes"
       }
      }
     },
     "localname": "IncomeTaxDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxes"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r202",
      "r221",
      "r222",
      "r250",
      "r403",
      "r425",
      "r431",
      "r520"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 2.0,
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": -1.0
      },
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.",
        "label": "Income Tax Expense (Benefit)",
        "totalLabel": "Income tax expense (benefit)",
        "verboseLabel": "Income taxes"
       }
      }
     },
     "localname": "IncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss",
      "http://www.calix.com/role/IncomeTaxesComponentsofIncomeTaxProvisionDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxPolicyTextBlock": {
     "auth_ref": [
      "r186",
      "r399",
      "r400",
      "r411",
      "r412",
      "r417",
      "r421"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for income taxes, which may include its accounting policies for recognizing and measuring deferred tax assets and liabilities and related valuation allowances, recognizing investment tax credits, operating loss carryforwards, tax credit carryforwards, and other carryforwards, methodologies for determining its effective income tax rate and the characterization of interest and penalties in the financial statements.",
        "label": "Income Tax, Policy [Policy Text Block]",
        "terseLabel": "Income Taxes"
       }
      }
     },
     "localname": "IncomeTaxPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance": {
     "auth_ref": [
      "r671"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to increase (decrease) in the valuation allowance for deferred tax assets.",
        "label": "Effective Income Tax Rate Reconciliation, Change in Deferred Tax Assets Valuation Allowance, Amount",
        "terseLabel": "Change in deferred tax assets valuation allowance, amount"
       }
      }
     },
     "localname": "IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxesPaidNet": {
     "auth_ref": [
      "r51"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of cash paid during the current period to foreign, federal, state, and local authorities as taxes on income, net of any cash received during the current period as refunds for the overpayment of taxes.",
        "label": "Income Taxes Paid, Net",
        "terseLabel": "Income taxes paid"
       }
      }
     },
     "localname": "IncomeTaxesPaidNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsPayable": {
     "auth_ref": [
      "r47"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 7.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in the aggregate amount of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business.",
        "label": "Increase (Decrease) in Accounts Payable",
        "verboseLabel": "Accounts payable"
       }
      }
     },
     "localname": "IncreaseDecreaseInAccountsPayable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsReceivable": {
     "auth_ref": [
      "r47"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 4.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in amount due within one year (or one business cycle) from customers for the credit sale of goods and services.",
        "label": "Increase (Decrease) in Accounts Receivable",
        "negatedLabel": "Accounts receivable, net"
       }
      }
     },
     "localname": "IncreaseDecreaseInAccountsReceivable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccruedLiabilities": {
     "auth_ref": [
      "r47"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 8.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in the aggregate amount of expenses incurred but not yet paid.",
        "label": "Increase (Decrease) in Accrued Liabilities",
        "verboseLabel": "Accrued liabilities"
       }
      }
     },
     "localname": "IncreaseDecreaseInAccruedLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInContractWithCustomerLiability": {
     "auth_ref": [
      "r504",
      "r597"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in obligation to transfer good or service to customer for which consideration has been received or is receivable.",
        "label": "Increase (Decrease) in Contract with Customer, Liability",
        "terseLabel": "Increase (Decrease) in Contract with Customer, Liability"
       }
      }
     },
     "localname": "IncreaseDecreaseInContractWithCustomerLiability",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersContractAssetsandLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInDeferredRevenue": {
     "auth_ref": [
      "r554"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 9.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in deferred income and obligation to transfer product and service to customer for which consideration has been received or is receivable.",
        "label": "Increase (Decrease) in Deferred Revenue",
        "verboseLabel": "Deferred revenue"
       }
      }
     },
     "localname": "IncreaseDecreaseInDeferredRevenue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInInventories": {
     "auth_ref": [
      "r47"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 5.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in the aggregate value of all inventory held by the reporting entity, associated with underlying transactions that are classified as operating activities.",
        "label": "Increase (Decrease) in Inventories",
        "negatedLabel": "Inventory"
       }
      }
     },
     "localname": "IncreaseDecreaseInInventories",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInOperatingCapitalAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Increase (Decrease) in Operating Capital [Abstract]",
        "verboseLabel": "Changes in operating assets and liabilities:"
       }
      }
     },
     "localname": "IncreaseDecreaseInOperatingCapitalAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 10.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in noncurrent operating liabilities classified as other.",
        "label": "Increase (Decrease) in Other Noncurrent Liabilities",
        "verboseLabel": "Other long-term liabilities"
       }
      }
     },
     "localname": "IncreaseDecreaseInOtherNoncurrentLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets": {
     "auth_ref": [
      "r47"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 6.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in prepaid expenses, and assets classified as other.",
        "label": "Increase (Decrease) in Prepaid Expense and Other Assets",
        "negatedLabel": "Prepaid expenses and other assets"
       }
      }
     },
     "localname": "IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInStockholdersEquityRollForward": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.",
        "label": "Increase (Decrease) in Stockholders' Equity [Roll Forward]",
        "terseLabel": "Increase (Decrease) in Stockholders' Equity [Roll Forward]"
       }
      }
     },
     "localname": "IncreaseDecreaseInStockholdersEquityRollForward",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails",
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements": {
     "auth_ref": [
      "r226",
      "r227",
      "r228",
      "r232",
      "r361"
     ],
     "calculation": {
      "http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of share based payment arrangements using the treasury stock method.",
        "label": "Incremental Common Shares Attributable to Dilutive Effect of Share-Based Payment Arrangements",
        "terseLabel": "Effect of dilutive potential common shares (in shares)"
       }
      }
     },
     "localname": "IncrementalCommonSharesAttributableToShareBasedPaymentArrangements",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_IntangibleAssetsNetExcludingGoodwill": {
     "auth_ref": [
      "r72",
      "r74"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_OtherAssetsNoncurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Sum of the carrying amounts of all intangible assets, excluding goodwill, as of the balance sheet date, net of accumulated amortization and impairment charges.",
        "label": "Intangible Assets, Net (Excluding Goodwill)",
        "terseLabel": "Intangible asset"
       }
      }
     },
     "localname": "IntangibleAssetsNetExcludingGoodwill",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InterestPaidNet": {
     "auth_ref": [
      "r195",
      "r197",
      "r198"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash paid for interest, excluding capitalized interest, classified as operating activity. Includes, but is not limited to, payment to settle zero-coupon bond for accreted interest of debt discount and debt instrument with insignificant coupon interest rate in relation to effective interest rate of borrowing attributable to accreted interest of debt discount.",
        "label": "Interest Paid, Excluding Capitalized Interest, Operating Activities",
        "terseLabel": "Interest paid"
       }
      }
     },
     "localname": "InterestPaidNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryFinishedGoodsNetOfReserves": {
     "auth_ref": [
      "r71",
      "r552"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsInventoryDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_InventoryNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying amount, net of valuation reserves and adjustments, as of the balance sheet date of merchandise or goods held by the company that are readily available for sale.",
        "label": "Inventory, Finished Goods, Net of Reserves",
        "verboseLabel": "Finished goods"
       }
      }
     },
     "localname": "InventoryFinishedGoodsNetOfReserves",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsInventoryDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryNet": {
     "auth_ref": [
      "r174",
      "r550",
      "r576"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsInventoryDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 4.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.",
        "label": "Inventory, Net",
        "totalLabel": "Total inventory",
        "verboseLabel": "Inventory"
       }
      }
     },
     "localname": "InventoryNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsInventoryDetails",
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryNetAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Inventory, Net [Abstract]",
        "verboseLabel": "Summary of inventory, net"
       }
      }
     },
     "localname": "InventoryNetAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsInventoryDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_InventoryPolicyTextBlock": {
     "auth_ref": [
      "r163",
      "r173",
      "r238",
      "r287",
      "r288",
      "r289",
      "r505",
      "r555"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of inventory accounting policy for inventory classes, including, but not limited to, basis for determining inventory amounts, methods by which amounts are added and removed from inventory classes, loss recognition on impairment of inventories, and situations in which inventories are stated above cost.",
        "label": "Inventory, Policy [Policy Text Block]",
        "terseLabel": "Inventory Valuation and Supplier Purchase Commitments"
       }
      }
     },
     "localname": "InventoryPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InventoryRawMaterialsNetOfReserves": {
     "auth_ref": [
      "r71",
      "r553"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsInventoryDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_InventoryNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying amount, net of valuation reserves and adjustments, as of the balance sheet date of unprocessed items to be consumed in the manufacturing or production process.",
        "label": "Inventory, Raw Materials, Net of Reserves",
        "verboseLabel": "Raw materials"
       }
      }
     },
     "localname": "InventoryRawMaterialsNetOfReserves",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsInventoryDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InvestmentIncomeNet": {
     "auth_ref": [
      "r36",
      "r38"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 1.0,
       "parentTag": "us-gaap_NonoperatingIncomeExpense",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after accretion (amortization) of discount (premium), and investment expense, of interest income and dividend income on nonoperating securities.",
        "label": "Investment Income, Net",
        "verboseLabel": "Interest income (expense), net"
       }
      }
     },
     "localname": "InvestmentIncomeNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LeaseholdImprovementsMember": {
     "auth_ref": [
      "r77"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Additions or improvements to assets held under a lease arrangement.",
        "label": "Leasehold Improvements [Member]",
        "verboseLabel": "Leasehold improvements"
       }
      }
     },
     "localname": "LeaseholdImprovementsMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock": {
     "auth_ref": [
      "r683"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of undiscounted cash flows of lessee's operating lease liability. Includes, but is not limited to, reconciliation of undiscounted cash flows to operating lease liability recognized in statement of financial position.",
        "label": "Lessee, Operating Lease, Liability, Maturity [Table Text Block]",
        "terseLabel": "Lessee, Operating Lease, Liability, Maturity"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue": {
     "auth_ref": [
      "r468"
     ],
     "calculation": {
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails_1": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease.",
        "label": "Lessee, Operating Lease, Liability, to be Paid",
        "terseLabel": "Total future minimum lease payments",
        "totalLabel": "Total future minimum lease payments"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails",
      "http://www.calix.com/role/CommitmentsandContingenciesTextualDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths": {
     "auth_ref": [
      "r468"
     ],
     "calculation": {
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails_1": {
       "order": 1.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Lessee, Operating Lease, Liability, to be Paid, Year One",
        "terseLabel": "2023"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour": {
     "auth_ref": [
      "r468"
     ],
     "calculation": {
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails_1": {
       "order": 4.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Lessee, Operating Lease, Liability, to be Paid, Year Four",
        "terseLabel": "2026 and thereafter"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFour",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree": {
     "auth_ref": [
      "r468"
     ],
     "calculation": {
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails_1": {
       "order": 3.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Lessee, Operating Lease, Liability, to be Paid, Year Three",
        "terseLabel": "2025"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo": {
     "auth_ref": [
      "r468"
     ],
     "calculation": {
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails_1": {
       "order": 2.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Lessee, Operating Lease, Liability, to be Paid, Year Two",
        "terseLabel": "2024"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount": {
     "auth_ref": [
      "r468"
     ],
     "calculation": {
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for operating lease.",
        "label": "Lessee, Operating Lease, Liability, Undiscounted Excess Amount",
        "negatedTerseLabel": "Less imputed interest"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityUndiscountedExcessAmount",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LessorOperatingLeasePaymentsToBeReceived": {
     "auth_ref": [
      "r469"
     ],
     "calculation": {
      "http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lease payments to be received by lessor for operating lease.",
        "label": "Lessor, Operating Lease, Payments to be Received",
        "totalLabel": "Total future minimum sublease payments"
       }
      }
     },
     "localname": "LessorOperatingLeasePaymentsToBeReceived",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock": {
     "auth_ref": [
      "r684"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of maturity of undiscounted cash flows to be received by lessor on annual basis for operating lease.",
        "label": "Lessor, Operating Lease, Payment to be Received, Fiscal Year Maturity [Table Text Block]",
        "terseLabel": "Lessor, Operating Lease, Payment to be Received, Fiscal Year Maturity"
       }
      }
     },
     "localname": "LessorOperatingLeasePaymentsToBeReceivedMaturityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths": {
     "auth_ref": [
      "r469"
     ],
     "calculation": {
      "http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_LessorOperatingLeasePaymentsToBeReceived",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lease payment to be received by lessor for operating lease in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Lessor, Operating Lease, Payment to be Received, Year One",
        "terseLabel": "2023"
       }
      }
     },
     "localname": "LessorOperatingLeasePaymentsToBeReceivedNextTwelveMonths",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LessorOperatingLeasePaymentsToBeReceivedThreeYears": {
     "auth_ref": [
      "r469"
     ],
     "calculation": {
      "http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_LessorOperatingLeasePaymentsToBeReceived",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lease payment to be received by lessor for operating lease in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Lessor, Operating Lease, Payment to be Received, Year Three",
        "terseLabel": "2025"
       }
      }
     },
     "localname": "LessorOperatingLeasePaymentsToBeReceivedThreeYears",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LessorOperatingLeasePaymentsToBeReceivedTwoYears": {
     "auth_ref": [
      "r469"
     ],
     "calculation": {
      "http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_LessorOperatingLeasePaymentsToBeReceived",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lease payment to be received by lessor for operating lease in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Lessor, Operating Lease, Payment to be Received, Year Two",
        "terseLabel": "2024"
       }
      }
     },
     "localname": "LessorOperatingLeasePaymentsToBeReceivedTwoYears",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LessorOperatingLeaseTermOfContract": {
     "auth_ref": [
      "r685"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Term of lessor's operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Lessor, Operating Lease, Term of Contract",
        "terseLabel": "Sublease, term of contract"
       }
      }
     },
     "localname": "LessorOperatingLeaseTermOfContract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesSubleaseDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_Liabilities": {
     "auth_ref": [
      "r15",
      "r199",
      "r276",
      "r317",
      "r318",
      "r319",
      "r320",
      "r321",
      "r322",
      "r323",
      "r324",
      "r325",
      "r436",
      "r437",
      "r438",
      "r450",
      "r559",
      "r633",
      "r690",
      "r691"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 1.0,
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all liabilities that are recognized. Liabilities are probable future sacrifices of economic benefits arising from present obligations of an entity to transfer assets or provide services to other entities in the future.",
        "label": "Liabilities",
        "totalLabel": "Total liabilities"
       }
      }
     },
     "localname": "Liabilities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesAndStockholdersEquity": {
     "auth_ref": [
      "r10",
      "r142",
      "r153",
      "r576",
      "r600",
      "r617",
      "r680"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any.",
        "label": "Liabilities and Equity",
        "totalLabel": "Total liabilities and stockholders' equity"
       }
      }
     },
     "localname": "LiabilitiesAndStockholdersEquity",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesAndStockholdersEquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Liabilities and Equity [Abstract]",
        "verboseLabel": "LIABILITIES AND STOCKHOLDERS\u2019 EQUITY"
       }
      }
     },
     "localname": "LiabilitiesAndStockholdersEquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LiabilitiesCurrent": {
     "auth_ref": [
      "r17",
      "r162",
      "r199",
      "r276",
      "r317",
      "r318",
      "r319",
      "r320",
      "r321",
      "r322",
      "r323",
      "r324",
      "r325",
      "r436",
      "r437",
      "r438",
      "r450",
      "r576",
      "r633",
      "r690",
      "r691"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 1.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Total obligations incurred as part of normal operations that are expected to be paid during the following twelve months or within one business cycle, if longer.",
        "label": "Liabilities, Current",
        "totalLabel": "Total current liabilities"
       }
      }
     },
     "localname": "LiabilitiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesCurrentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Liabilities, Current [Abstract]",
        "verboseLabel": "Current liabilities:"
       }
      }
     },
     "localname": "LiabilitiesCurrentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LossContingenciesLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Loss Contingencies [Line Items]",
        "terseLabel": "Loss Contingencies [Line Items]"
       }
      }
     },
     "localname": "LossContingenciesLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesTextualDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LossContingenciesTable": {
     "auth_ref": [
      "r82",
      "r83",
      "r312",
      "r313",
      "r314",
      "r629",
      "r630"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Discloses the specific components (such as the nature, name, and date) of the loss contingency and gives an estimate of the possible loss or range of loss, or states that a reasonable estimate cannot be made. Excludes environmental contingencies, warranties and unconditional purchase obligations.",
        "label": "Loss Contingencies [Table]",
        "terseLabel": "Schedule of Commitments and Contingencies"
       }
      }
     },
     "localname": "LossContingenciesTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesTextualDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_MoneyMarketFundsMember": {
     "auth_ref": [
      "r641"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fund that invests in short-term money-market instruments, for example, but not limited to, commercial paper, banker's acceptances, repurchase agreements, government securities, certificates of deposit, and other highly liquid securities.",
        "label": "Money Market Funds [Member]",
        "terseLabel": "Money market funds"
       }
      }
     },
     "localname": "MoneyMarketFundsMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.",
        "label": "Movement in Standard and Extended Product Warranty Accrual, Increase (Decrease) [Roll Forward]",
        "verboseLabel": "Product warranty activities [Roll Forward]"
       }
      }
     },
     "localname": "MovementInStandardAndExtendedProductWarrantyIncreaseDecreaseRollForward",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsProductWarrantyActivityDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_MovementInValuationAllowancesAndReservesRollForward": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.",
        "label": "SEC Schedule, 12-09, Movement in Valuation Allowances and Reserves [Roll Forward]",
        "terseLabel": "SEC Schedule, 12-09, Movement in Valuation Allowances and Reserves [Roll Forward]"
       }
      }
     },
     "localname": "MovementInValuationAllowancesAndReservesRollForward",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_MunicipalNotesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Short-term debt securities issued by state, city or local governments or the agencies operated by state, city or local governments.",
        "label": "Municipal Notes [Member]",
        "terseLabel": "Municipal securities"
       }
      }
     },
     "localname": "MunicipalNotesMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails",
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivities": {
     "auth_ref": [
      "r196"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 2.0,
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash inflow (outflow) from financing activities, including discontinued operations. Financing activity cash flows include obtaining resources from owners and providing them with a return on, and a return of, their investment; borrowing money and repaying amounts borrowed, or settling the obligation; and obtaining and paying for other resources obtained from creditors on long-term credit.",
        "label": "Net Cash Provided by (Used in) Financing Activities",
        "totalLabel": "Net cash provided by financing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInFinancingActivities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Net Cash Provided by (Used in) Financing Activities [Abstract]",
        "verboseLabel": "Financing activities:"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInFinancingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivities": {
     "auth_ref": [
      "r196"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 3.0,
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash inflow (outflow) from investing activities, including discontinued operations. Investing activity cash flows include making and collecting loans and acquiring and disposing of debt or equity instruments and property, plant, and equipment and other productive assets.",
        "label": "Net Cash Provided by (Used in) Investing Activities",
        "totalLabel": "Net cash used in investing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInInvestingActivities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Net Cash Provided by (Used in) Investing Activities [Abstract]",
        "verboseLabel": "Investing activities:"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInInvestingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivities": {
     "auth_ref": [
      "r45",
      "r46",
      "r49"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 4.0,
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash inflow (outflow) from operating activities, including discontinued operations. Operating activity cash flows include transactions, adjustments, and changes in value not defined as investing or financing activities.",
        "label": "Net Cash Provided by (Used in) Operating Activities",
        "totalLabel": "Net cash provided by operating activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInOperatingActivities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Net Cash Provided by (Used in) Operating Activities [Abstract]",
        "verboseLabel": "Operating activities:"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInOperatingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetIncomeLoss": {
     "auth_ref": [
      "r31",
      "r49",
      "r147",
      "r156",
      "r160",
      "r181",
      "r184",
      "r189",
      "r199",
      "r213",
      "r215",
      "r216",
      "r217",
      "r218",
      "r221",
      "r222",
      "r229",
      "r251",
      "r254",
      "r259",
      "r262",
      "r276",
      "r317",
      "r318",
      "r319",
      "r320",
      "r321",
      "r322",
      "r323",
      "r324",
      "r325",
      "r442",
      "r450",
      "r560",
      "r633"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 13.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      },
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 1.0,
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.",
        "label": "Net Income (Loss) Attributable to Parent",
        "terseLabel": "Net income",
        "totalLabel": "Net income"
       }
      }
     },
     "localname": "NetIncomeLoss",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows",
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss",
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity",
      "http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetIncomeLossAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Net Income (Loss) Attributable to Parent [Abstract]",
        "verboseLabel": "Numerator:"
       }
      }
     },
     "localname": "NetIncomeLossAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact.",
        "label": "New Accounting Pronouncements, Policy [Policy Text Block]",
        "verboseLabel": "Newly Adopted Accounting Standards and Recent Accounting Pronouncements Not Yet Adopted"
       }
      }
     },
     "localname": "NewAccountingPronouncementsPolicyPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_NoncashInvestingAndFinancingItemsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Noncash Investing and Financing Items [Abstract]",
        "verboseLabel": "Non-cash investing activities:"
       }
      }
     },
     "localname": "NoncashInvestingAndFinancingItemsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NonoperatingIncomeExpense": {
     "auth_ref": [
      "r37"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate amount of income or expense from ancillary business-related activities (that is to say, excluding major activities considered part of the normal operations of the business).",
        "label": "Nonoperating Income (Expense)",
        "totalLabel": "Total interest and other income (expense), net"
       }
      }
     },
     "localname": "NonoperatingIncomeExpense",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NonoperatingIncomeExpenseAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Nonoperating Income (Expense) [Abstract]",
        "verboseLabel": "Interest and other income (expense), net:"
       }
      }
     },
     "localname": "NonoperatingIncomeExpenseAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_OperatingExpenses": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 2.0,
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Generally recurring costs associated with normal operations except for the portion of these expenses which can be clearly related to production and included in cost of sales or services. Includes selling, general and administrative expense.",
        "label": "Operating Expenses",
        "totalLabel": "Total operating expenses"
       }
      }
     },
     "localname": "OperatingExpenses",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingExpensesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating Expenses [Abstract]",
        "verboseLabel": "Operating expenses:"
       }
      }
     },
     "localname": "OperatingExpensesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_OperatingIncomeLoss": {
     "auth_ref": [
      "r251",
      "r254",
      "r259",
      "r262",
      "r560"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 3.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The net result for the period of deducting operating expenses from operating revenues.",
        "label": "Operating Income (Loss)",
        "totalLabel": "Operating income"
       }
      }
     },
     "localname": "OperatingIncomeLoss",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseCost": {
     "auth_ref": [
      "r463",
      "r575"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of single lease cost, calculated by allocation of remaining cost of lease over remaining lease term. Includes, but is not limited to, single lease cost, after impairment of right-of-use asset, calculated by amortization of remaining right-of-use asset and accretion of lease liability.",
        "label": "Operating Lease, Cost",
        "terseLabel": "Rent expense"
       }
      }
     },
     "localname": "OperatingLeaseCost",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesTextualDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiability": {
     "auth_ref": [
      "r460"
     ],
     "calculation": {
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      },
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseLiabilityDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease.",
        "label": "Operating Lease, Liability",
        "terseLabel": "Operating lease, liability",
        "totalLabel": "Operating lease liability"
       }
      }
     },
     "localname": "OperatingLeaseLiability",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseDetails",
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseLiabilityDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityCurrent": {
     "auth_ref": [
      "r460"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails": {
       "order": 4.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      },
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseLiabilityDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_OperatingLeaseLiability",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as current.",
        "label": "Operating Lease, Liability, Current",
        "terseLabel": "Accrued liabilities - current portion of operating leases",
        "verboseLabel": "Operating leases"
       }
      }
     },
     "localname": "OperatingLeaseLiabilityCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails",
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseLiabilityDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList": {
     "auth_ref": [
      "r461"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicates line item in statement of financial position that includes current operating lease liability.",
        "label": "Operating Lease, Liability, Current, Statement of Financial Position [Extensible Enumeration]",
        "terseLabel": "Operating lease, liability, current, statement of financial position"
       }
      }
     },
     "localname": "OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails",
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseLiabilityDetails"
     ],
     "xbrltype": "enumerationSetItemType"
    },
    "us-gaap_OperatingLeaseLiabilityNoncurrent": {
     "auth_ref": [
      "r460"
     ],
     "calculation": {
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseLiabilityDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_OperatingLeaseLiability",
       "weight": 1.0
      },
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 4.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent.",
        "label": "Operating Lease, Liability, Noncurrent",
        "terseLabel": "Operating leases",
        "verboseLabel": "Operating leases"
       }
      }
     },
     "localname": "OperatingLeaseLiabilityNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesOperatingLeaseLiabilityDetails",
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeasePayments": {
     "auth_ref": [
      "r462",
      "r465"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash outflow from operating lease, excluding payments to bring another asset to condition and location necessary for its intended use.",
        "label": "Operating Lease, Payments",
        "terseLabel": "Operating lease, payments"
       }
      }
     },
     "localname": "OperatingLeasePayments",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesTextualDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseRightOfUseAsset": {
     "auth_ref": [
      "r459"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 4.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's right to use underlying asset under operating lease.",
        "label": "Operating Lease, Right-of-Use Asset",
        "terseLabel": "Right-of-use operating leases"
       }
      }
     },
     "localname": "OperatingLeaseRightOfUseAsset",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent": {
     "auth_ref": [
      "r467",
      "r575"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average discount rate for operating lease calculated at point in time.",
        "label": "Operating Lease, Weighted Average Discount Rate, Percent",
        "terseLabel": "Operating lease, weighted average discount rate, percent"
       }
      }
     },
     "localname": "OperatingLeaseWeightedAverageDiscountRatePercent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesTextualDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1": {
     "auth_ref": [
      "r466",
      "r575"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average remaining lease term for operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Operating Lease, Weighted Average Remaining Lease Term",
        "terseLabel": "Operating lease, weighted average remaining lease term"
       }
      }
     },
     "localname": "OperatingLeaseWeightedAverageRemainingLeaseTerm1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesTextualDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_OperatingLossCarryforwards": {
     "auth_ref": [
      "r120"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of operating loss carryforward, before tax effects, available to reduce future taxable income under enacted tax laws.",
        "label": "Operating Loss Carryforwards",
        "terseLabel": "Operating loss carryforward"
       }
      }
     },
     "localname": "OperatingLossCarryforwards",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTextualDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherAccruedLiabilitiesCurrent": {
     "auth_ref": [
      "r16"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of expenses incurred but not yet paid classified as other, due within one year or the normal operating cycle, if longer.",
        "label": "Other Accrued Liabilities, Current",
        "verboseLabel": "Other"
       }
      }
     },
     "localname": "OtherAccruedLiabilitiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherAssetsMiscellaneousNoncurrent": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_OtherAssetsNoncurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of other miscellaneous assets expected to be realized or consumed after one year or normal operating cycle, if longer.",
        "label": "Other Assets, Miscellaneous, Noncurrent",
        "terseLabel": "Other long-term assets"
       }
      }
     },
     "localname": "OtherAssetsMiscellaneousNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherAssetsNoncurrent": {
     "auth_ref": [
      "r168"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 1.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of noncurrent assets classified as other.",
        "label": "Other Assets, Noncurrent",
        "totalLabel": "Other assets",
        "verboseLabel": "Other assets"
       }
      }
     },
     "localname": "OtherAssetsNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails",
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent": {
     "auth_ref": [
      "r124",
      "r125",
      "r126"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 2.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after tax and reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature, attributable to parent entity.",
        "label": "Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent",
        "verboseLabel": "Foreign currency translation adjustments, net"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other Comprehensive Income (Loss), Net of Tax [Abstract]",
        "verboseLabel": "Other comprehensive income (loss), net of tax:"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent": {
     "auth_ref": [
      "r124",
      "r125",
      "r126",
      "r182",
      "r185"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 2.0,
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after tax of other comprehensive income (loss) attributable to parent entity.",
        "label": "Other Comprehensive Income (Loss), Net of Tax, Portion Attributable to Parent",
        "terseLabel": "Other comprehensive income (loss)",
        "totalLabel": "Total other comprehensive income (loss), net of tax"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails",
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss",
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax": {
     "auth_ref": [
      "r176",
      "r179"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 1.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after tax and before adjustment, of unrealized holding gain (loss) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale). Excludes unrealized gain (loss) on investment in debt security measured at amortized cost (held-to-maturity) from transfer to available-for-sale.",
        "label": "OCI, Debt Securities, Available-for-Sale, Unrealized Holding Gain (Loss), before Adjustment, after Tax",
        "terseLabel": "Unrealized loss on available-for-sale marketable securities, net"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherLiabilities": {
     "auth_ref": [
      "r144"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liabilities classified as other.",
        "label": "Other Liabilities",
        "terseLabel": "Other liabilities"
       }
      }
     },
     "localname": "OtherLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherLiabilitiesNoncurrent": {
     "auth_ref": [
      "r18"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 3.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer.",
        "label": "Other Liabilities, Noncurrent",
        "verboseLabel": "Other long-term liabilities"
       }
      }
     },
     "localname": "OtherLiabilitiesNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails",
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherNonoperatingIncomeExpense": {
     "auth_ref": [
      "r39"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 2.0,
       "parentTag": "us-gaap_NonoperatingIncomeExpense",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of income (expense) related to nonoperating activities, classified as other.",
        "label": "Other Nonoperating Income (Expense)",
        "verboseLabel": "Other expense, net"
       }
      }
     },
     "localname": "OtherNonoperatingIncomeExpense",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OverAllotmentOptionMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Right given to the underwriter to sell additional shares over the initial allotment.",
        "label": "Over-Allotment Option [Member]",
        "terseLabel": "Over-Allotment Option"
       }
      }
     },
     "localname": "OverAllotmentOptionMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PaymentsToAcquireMarketableSecurities": {
     "auth_ref": [
      "r68"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 1.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash outflow for purchase of marketable security.",
        "label": "Payments to Acquire Marketable Securities",
        "negatedTerseLabel": "Purchases of marketable securities"
       }
      }
     },
     "localname": "PaymentsToAcquireMarketableSecurities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment": {
     "auth_ref": [
      "r41"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 3.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets.",
        "label": "Payments to Acquire Property, Plant, and Equipment",
        "negatedLabel": "Purchases of property and equipment"
       }
      }
     },
     "localname": "PaymentsToAcquirePropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PlanNameAxis": {
     "auth_ref": [
      "r643",
      "r644",
      "r645",
      "r646",
      "r647",
      "r648",
      "r649",
      "r650",
      "r651",
      "r652",
      "r653",
      "r654",
      "r655",
      "r656",
      "r657",
      "r658",
      "r659",
      "r660",
      "r661",
      "r662",
      "r663",
      "r664",
      "r665",
      "r666",
      "r667",
      "r668"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by plan name for share-based payment arrangement.",
        "label": "Plan Name [Axis]",
        "terseLabel": "Plan Name [Axis]"
       }
      }
     },
     "localname": "PlanNameAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails",
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails",
      "http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails",
      "http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PlanNameDomain": {
     "auth_ref": [
      "r643",
      "r644",
      "r645",
      "r646",
      "r647",
      "r648",
      "r649",
      "r650",
      "r651",
      "r652",
      "r653",
      "r654",
      "r655",
      "r656",
      "r657",
      "r658",
      "r659",
      "r660",
      "r661",
      "r662",
      "r663",
      "r664",
      "r665",
      "r666",
      "r667",
      "r668"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Plan name for share-based payment arrangement.",
        "label": "Plan Name [Domain]",
        "terseLabel": "Plan Name [Domain]"
       }
      }
     },
     "localname": "PlanNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails",
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails",
      "http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails",
      "http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PreferredStockParOrStatedValuePerShare": {
     "auth_ref": [
      "r4",
      "r328"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer.",
        "label": "Preferred Stock, Par or Stated Value Per Share",
        "verboseLabel": "Preferred stock, par value (in dollars per share)"
       }
      }
     },
     "localname": "PreferredStockParOrStatedValuePerShare",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheetsParenthetical"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_PreferredStockSharesAuthorized": {
     "auth_ref": [
      "r4"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The maximum number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) permitted to be issued by an entity's charter and bylaws.",
        "label": "Preferred Stock, Shares Authorized",
        "verboseLabel": "Preferred stock, shares authorized (in shares)"
       }
      }
     },
     "localname": "PreferredStockSharesAuthorized",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheetsParenthetical",
      "http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockSharesIssued": {
     "auth_ref": [
      "r4",
      "r328"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Total number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) issued to shareholders (includes related preferred shares that were issued, repurchased, and remain in the treasury). May be all or portion of the number of preferred shares authorized. Excludes preferred shares that are classified as debt.",
        "label": "Preferred Stock, Shares Issued",
        "verboseLabel": "Preferred stock, shares issued (in shares)"
       }
      }
     },
     "localname": "PreferredStockSharesIssued",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheetsParenthetical",
      "http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockSharesOutstanding": {
     "auth_ref": [
      "r4"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Aggregate share number for all nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer) held by stockholders. Does not include preferred shares that have been repurchased.",
        "label": "Preferred Stock, Shares Outstanding",
        "verboseLabel": "Preferred stock, shares outstanding (in shares)"
       }
      }
     },
     "localname": "PreferredStockSharesOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheetsParenthetical",
      "http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockValue": {
     "auth_ref": [
      "r4",
      "r576"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 1.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Aggregate par or stated value of issued nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable preferred shares, par value and other disclosure concepts are in another section within stockholders' equity.",
        "label": "Preferred Stock, Value, Issued",
        "verboseLabel": "Preferred stock, $0.025 par value; 5,000 shares authorized; no shares issued and outstanding as of December 31, 2022 and 2021"
       }
      }
     },
     "localname": "PreferredStockValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PrepaidExpenseAndOtherAssetsCurrent": {
     "auth_ref": [
      "r592"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 1.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer.",
        "label": "Prepaid Expense and Other Assets, Current",
        "totalLabel": "Prepaid expenses and other current assets",
        "verboseLabel": "Prepaid expenses and other current assets"
       }
      }
     },
     "localname": "PrepaidExpenseAndOtherAssetsCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsScheduleofPrepaidandOtherCurrentAssetsDetails",
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromIssuanceOfCommonStock": {
     "auth_ref": [
      "r42"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 5.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash inflow from the additional capital contribution to the entity.",
        "label": "Proceeds from Issuance of Common Stock",
        "terseLabel": "Proceeds from the sale of common stock in connection with public offering, net of expenses"
       }
      }
     },
     "localname": "ProceedsFromIssuanceOfCommonStock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromLinesOfCredit": {
     "auth_ref": [
      "r43",
      "r599"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 1.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash inflow from contractual arrangement with the lender, including but not limited to, letter of credit, standby letter of credit and revolving credit arrangements.",
        "label": "Proceeds from Lines of Credit",
        "terseLabel": "Proceeds from line of credit"
       }
      }
     },
     "localname": "ProceedsFromLinesOfCredit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities": {
     "auth_ref": [
      "r68",
      "r193",
      "r194"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 2.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash inflow from maturity, prepayment and call of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).",
        "label": "Proceeds from Maturities, Prepayments and Calls of Debt Securities, Available-for-Sale",
        "verboseLabel": "Maturities of marketable securities"
       }
      }
     },
     "localname": "ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromStockOptionsExercised": {
     "auth_ref": [
      "r42",
      "r108"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 4.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash inflow from exercise of option under share-based payment arrangement.",
        "label": "Proceeds from Stock Options Exercised",
        "verboseLabel": "Proceeds from common stock issuances related to employee benefit plans"
       }
      }
     },
     "localname": "ProceedsFromStockOptionsExercised",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProductWarrantyAccrual": {
     "auth_ref": [
      "r88",
      "r89",
      "r143"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying value as of the balance sheet date of obligations incurred through that date and payable for estimated claims under standard and extended warranty protection rights granted to customers.",
        "label": "Standard and Extended Product Warranty Accrual",
        "periodEndLabel": "Balance at end of year",
        "periodStartLabel": "Balance at beginning of year"
       }
      }
     },
     "localname": "ProductWarrantyAccrual",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsProductWarrantyActivityDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProductWarrantyAccrualClassifiedCurrent": {
     "auth_ref": [
      "r16",
      "r81",
      "r84"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails": {
       "order": 5.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying value as of the balance sheet date of obligations incurred through that date and payable for estimated claims under standard and extended warranty protection rights granted to customers. For classified balance sheets, represents the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "Product Warranty Accrual, Current",
        "terseLabel": "Current portion of warranty and retrofit"
       }
      }
     },
     "localname": "ProductWarrantyAccrualClassifiedCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAccruedLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProductWarrantyAccrualPayments": {
     "auth_ref": [
      "r85"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of decrease in the standard and extended product warranty accrual from payments made in cash or in kind to satisfy claims under the terms of the standard and extended product warranty.",
        "label": "Standard and Extended Product Warranty Accrual, Decrease for Payments",
        "negatedLabel": "Utilization of reserve"
       }
      }
     },
     "localname": "ProductWarrantyAccrualPayments",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsProductWarrantyActivityDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProductWarrantyAccrualWarrantiesIssued": {
     "auth_ref": [
      "r86"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in the standard and extended product warranty accrual from warranties issued.",
        "label": "Standard and Extended Product Warranty Accrual, Increase for Warranties Issued",
        "verboseLabel": "Provision for warranty and retrofit charged to cost of revenue"
       }
      }
     },
     "localname": "ProductWarrantyAccrualWarrantiesIssued",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsProductWarrantyActivityDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentByTypeAxis": {
     "auth_ref": [
      "r79"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of long-lived, physical assets used to produce goods and services and not intended for resale.",
        "label": "Long-Lived Tangible Asset [Axis]",
        "terseLabel": "Property, Plant and Equipment, Type [Axis]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentByTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentGross": {
     "auth_ref": [
      "r77",
      "r165"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.",
        "label": "Property, Plant and Equipment, Gross",
        "verboseLabel": "Property and equipment, gross"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentGross",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Property, Plant and Equipment [Line Items]",
        "terseLabel": "Property, Plant and Equipment [Line Items]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentNet": {
     "auth_ref": [
      "r79",
      "r154",
      "r515",
      "r576"
     ],
     "calculation": {
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 5.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.",
        "label": "Property, Plant and Equipment, Net",
        "totalLabel": "Property and equipment, net",
        "verboseLabel": "Property and equipment, net"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails",
      "http://www.calix.com/role/ConsolidatedBalanceSheets",
      "http://www.calix.com/role/RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentPolicyTextBlock": {
     "auth_ref": [
      "r79",
      "r535",
      "r536"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections.",
        "label": "Property, Plant and Equipment, Policy [Policy Text Block]",
        "terseLabel": "Property and Equipment"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentTextBlock": {
     "auth_ref": [
      "r79"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation.",
        "label": "Property, Plant and Equipment [Table Text Block]",
        "verboseLabel": "Property and Equipment, net"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentTypeDomain": {
     "auth_ref": [
      "r77"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Listing of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale. Examples include land, buildings, machinery and equipment, and other types of furniture and equipment including, but not limited to, office equipment, furniture and fixtures, and computer equipment and software.",
        "label": "Long-Lived Tangible Asset [Domain]",
        "terseLabel": "Property, Plant and Equipment, Type [Domain]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentUsefulLife": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Useful life of long lived, physical assets used in the normal conduct of business and not intended for resale, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days. Examples include, but not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment.",
        "label": "Property, Plant and Equipment, Useful Life",
        "terseLabel": "Useful life of property and equipment"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentUsefulLife",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted": {
     "auth_ref": [
      "r1",
      "r141",
      "r151"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Minimum amount to be expended to satisfy the terms of arrangements in which the entity has agreed to expend funds to procure goods or services, excluding long-term purchase commitments or unconditional purchase obligations.",
        "label": "Purchase Commitment, Remaining Minimum Amount Committed",
        "terseLabel": "Purchase commitments"
       }
      }
     },
     "localname": "PurchaseCommitmentRemainingMinimumAmountCommitted",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesTextualDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy": {
     "auth_ref": [
      "r66"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for determining the allowance for doubtful accounts for trade and other accounts receivable balances, and when impairments, charge-offs or recoveries are recognized.",
        "label": "Receivables, Trade and Other Accounts Receivable, Allowance for Doubtful Accounts, Policy [Policy Text Block]",
        "terseLabel": "Allowance for Doubtful Accounts"
       }
      }
     },
     "localname": "ReceivablesTradeAndOtherAccountsReceivableAllowanceForDoubtfulAccountsPolicy",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.",
        "label": "Reconciliation of Unrecognized Tax Benefits, Excluding Amounts Pertaining to Examined Tax Returns [Roll Forward]",
        "terseLabel": "Unrecognized Tax Benefits [Roll Forward]"
       }
      }
     },
     "localname": "ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesUnrecognizedTaxBenefitsActivityDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RepaymentsOfLinesOfCredit": {
     "auth_ref": [
      "r44",
      "r599"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 2.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash outflow for payment of an obligation from a lender, including but not limited to, letter of credit, standby letter of credit and revolving credit arrangements.",
        "label": "Repayments of Lines of Credit",
        "negatedTerseLabel": "Payments related to the line of credit"
       }
      }
     },
     "localname": "RepaymentsOfLinesOfCredit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ResearchAndDevelopmentExpense": {
     "auth_ref": [
      "r113",
      "r158",
      "r698"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 2.0,
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate costs incurred (1) in a planned search or critical investigation aimed at discovery of new knowledge with the hope that such knowledge will be useful in developing a new product or service, a new process or technique, or in bringing about a significant improvement to an existing product or process; or (2) to translate research findings or other knowledge into a plan or design for a new product or process or for a significant improvement to an existing product or process whether intended for sale or the entity's use, during the reporting period charged to research and development projects, including the costs of developing computer software up to the point in time of achieving technological feasibility, and costs allocated in accounting for a business combination to in-process projects deemed to have no alternative future use.",
        "label": "Research and Development Expense",
        "verboseLabel": "Research and development"
       }
      }
     },
     "localname": "ResearchAndDevelopmentExpense",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ResearchAndDevelopmentExpenseMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Primary financial statement caption in which the reported facts about research and development expense have been included.",
        "label": "Research and Development Expense [Member]",
        "verboseLabel": "Research and development"
       }
      }
     },
     "localname": "ResearchAndDevelopmentExpenseMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember": {
     "auth_ref": [
      "r164"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Type of cash and cash equivalent. Cash is currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.",
        "label": "Cash and Cash Equivalents [Domain]",
        "terseLabel": "Cash and Cash Equivalents [Domain]"
       }
      }
     },
     "localname": "RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RestructuringCharges": {
     "auth_ref": [
      "r48",
      "r305",
      "r307",
      "r628"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 1.0,
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of expenses associated with exit or disposal activities pursuant to an authorized plan. Excludes expenses related to a discontinued operation or an asset retirement obligation.",
        "label": "Restructuring Charges",
        "terseLabel": "Restructuring charges (benefit)",
        "verboseLabel": "Restructuring charges (benefit)"
       }
      }
     },
     "localname": "RestructuringCharges",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails",
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RestructuringCostAndReserveLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Restructuring Cost and Reserve [Line Items]",
        "terseLabel": "Restructuring Cost and Reserve [Line Items]"
       }
      }
     },
     "localname": "RestructuringCostAndReserveLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RestructuringPlanAxis": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by individual restructuring plan.",
        "label": "Restructuring Plan [Axis]",
        "terseLabel": "Restructuring Plan [Axis]"
       }
      }
     },
     "localname": "RestructuringPlanAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RestructuringPlanDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Identification of the individual restructuring plans.",
        "label": "Restructuring Plan [Domain]",
        "terseLabel": "Restructuring Plan [Domain]"
       }
      }
     },
     "localname": "RestructuringPlanDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RestructuringReserve": {
     "auth_ref": [
      "r302",
      "r306"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying amount (including both current and noncurrent portions of the accrual) as of the balance sheet date pertaining to a specified type of cost associated with exit from or disposal of business activities or restructuring pursuant to a duly authorized plan.",
        "label": "Restructuring Reserve",
        "verboseLabel": "Restructuring reserve"
       }
      }
     },
     "localname": "RestructuringReserve",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RetainedEarningsAccumulatedDeficit": {
     "auth_ref": [
      "r7",
      "r93",
      "r152",
      "r525",
      "r527",
      "r576"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 5.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cumulative amount of the reporting entity's undistributed earnings or deficit.",
        "label": "Retained Earnings (Accumulated Deficit)",
        "verboseLabel": "Accumulated deficit"
       }
      }
     },
     "localname": "RetainedEarningsAccumulatedDeficit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RetainedEarningsMember": {
     "auth_ref": [
      "r159",
      "r210",
      "r211",
      "r212",
      "r214",
      "r220",
      "r222",
      "r277",
      "r393",
      "r394",
      "r395",
      "r422",
      "r423",
      "r440",
      "r522",
      "r524"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cumulative amount of the reporting entity's undistributed earnings or deficit.",
        "label": "Retained Earnings [Member]",
        "terseLabel": "Accumulated Deficit"
       }
      }
     },
     "localname": "RetainedEarningsMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revenue from Contract with Customer [Abstract]",
        "terseLabel": "Revenue from Contract with Customer [Abstract]"
       }
      }
     },
     "localname": "RevenueFromContractWithCustomerAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax": {
     "auth_ref": [
      "r248",
      "r249",
      "r253",
      "r257",
      "r258",
      "r264",
      "r265",
      "r268",
      "r344",
      "r345",
      "r506"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 1.0,
       "parentTag": "us-gaap_GrossProfit",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, excluding tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value added and excise.",
        "label": "Revenue from Contract with Customer, Excluding Assessed Tax",
        "terseLabel": "Revenue"
       }
      }
     },
     "localname": "RevenueFromContractWithCustomerExcludingAssessedTax",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss",
      "http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerMember": {
     "auth_ref": [
      "r268",
      "r611"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Revenue from satisfaction of performance obligation by transferring promised product and service to customer, when it serves as benchmark in concentration of risk calculation.",
        "label": "Revenue from Contract with Customer Benchmark [Member]",
        "terseLabel": "Revenue from Contract with Customer Benchmark"
       }
      }
     },
     "localname": "RevenueFromContractWithCustomerMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersConcentrationRiskDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerPolicyTextBlock": {
     "auth_ref": [
      "r336",
      "r337",
      "r338",
      "r339",
      "r340",
      "r341",
      "r342",
      "r343",
      "r348",
      "r556"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for revenue from contract with customer.",
        "label": "Revenue from Contract with Customer [Policy Text Block]",
        "terseLabel": "Revenue Recognition, Contract Costs, and Deferred Revenue"
       }
      }
     },
     "localname": "RevenueFromContractWithCustomerPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock": {
     "auth_ref": [
      "r64"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of revenue from external customers by geographic areas attributed to the entity's country of domicile and to foreign countries from which the entity derives revenue.",
        "label": "Revenue from External Customers by Geographic Areas [Table Text Block]",
        "terseLabel": "Revenue by Geographic Region"
       }
      }
     },
     "localname": "RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RevenueRemainingPerformanceObligation": {
     "auth_ref": [
      "r334"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of transaction price allocated to performance obligation that has not been recognized as revenue.",
        "label": "Revenue, Remaining Performance Obligation, Amount",
        "terseLabel": "Performance obligations expected to be satisfied"
       }
      }
     },
     "localname": "RevenueRemainingPerformanceObligation",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]",
        "terseLabel": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]"
       }
      }
     },
     "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1": {
     "auth_ref": [
      "r335"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Period in which remaining performance obligation is expected to be recognized as revenue, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Period",
        "terseLabel": "Performance obligations expected to be satisfied, expected timing"
       }
      }
     },
     "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis": {
     "auth_ref": [
      "r335"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Start date of time band for expected timing of satisfaction of remaining performance obligation, in YYYY-MM-DD format.",
        "label": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]",
        "terseLabel": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]"
       }
      }
     },
     "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of information about expected timing for satisfying remaining performance obligation.",
        "label": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Table]",
        "terseLabel": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Table]"
       }
      }
     },
     "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RevenueRemainingPerformanceObligationPercentage": {
     "auth_ref": [
      "r638"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of remaining performance obligation to total remaining performance obligation not recognized as revenue.",
        "label": "Revenue, Remaining Performance Obligation, Percentage",
        "terseLabel": "Remaining performance obligation, percentage"
       }
      }
     },
     "localname": "RevenueRemainingPerformanceObligationPercentage",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersPerformanceObligationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Revenues from External Customers and Long-Lived Assets [Line Items]",
        "terseLabel": "Revenues from External Customers and Long-Lived Assets [Line Items]"
       }
      }
     },
     "localname": "RevenuesFromExternalCustomersAndLongLivedAssetsLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails",
      "http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RoyaltyGuaranteesCommitmentsAmount": {
     "auth_ref": [
      "r509"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount the entity has committed to make for future royalty guarantees.",
        "label": "Royalty Guarantees, Commitments, Amount",
        "terseLabel": "Royalty payment commitment amount"
       }
      }
     },
     "localname": "RoyaltyGuaranteesCommitmentsAmount",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_SaleOfStockConsiderationReceivedOnTransaction": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Cash received on stock transaction after deduction of issuance costs.",
        "label": "Sale of Stock, Consideration Received on Transaction",
        "terseLabel": "Aggregate net proceeds from stock offering"
       }
      }
     },
     "localname": "SaleOfStockConsiderationReceivedOnTransaction",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_SaleOfStockNameOfTransactionDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Sale of the entity's stock, including, but not limited to, initial public offering (IPO) and private placement.",
        "label": "Sale of Stock [Domain]",
        "terseLabel": "Sale of Stock [Domain]"
       }
      }
     },
     "localname": "SaleOfStockNameOfTransactionDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SaleOfStockNumberOfSharesIssuedInTransaction": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of shares issued or sold by the subsidiary or equity method investee per stock transaction.",
        "label": "Sale of Stock, Number of Shares Issued in Transaction",
        "terseLabel": "Shares sold in offering (in shares)"
       }
      }
     },
     "localname": "SaleOfStockNumberOfSharesIssuedInTransaction",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock": {
     "auth_ref": [
      "r22"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the various types of trade accounts and notes receivable and for each the gross carrying value, allowance, and net carrying value as of the balance sheet date. Presentation is categorized by current, noncurrent and unclassified receivables.",
        "label": "Schedule of Accounts, Notes, Loans and Financing Receivable [Table Text Block]",
        "verboseLabel": "Accounts Receivable, net"
       }
      }
     },
     "localname": "ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the components of accrued liabilities.",
        "label": "Schedule of Accrued Liabilities [Table Text Block]",
        "verboseLabel": "Accrued Liabilities"
       }
      }
     },
     "localname": "ScheduleOfAccruedLiabilitiesTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock": {
     "auth_ref": [
      "r27",
      "r681",
      "r682"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the components of accumulated other comprehensive income (loss).",
        "label": "Schedule of Accumulated Other Comprehensive Income (Loss) [Table Text Block]",
        "terseLabel": "Schedule of Accumulated Other Comprehensive Income (Loss)"
       }
      }
     },
     "localname": "ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/AccumulatedOtherComprehensiveLossTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Debt Securities, Available-for-Sale [Line Items]",
        "terseLabel": "Debt Securities, Available-for-sale [Line Items]"
       }
      }
     },
     "localname": "ScheduleOfAvailableForSaleSecuritiesLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfCashAndCashEquivalentsTable": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule of cash and cash equivalent balances. This table excludes restricted cash balances.",
        "label": "Schedule of Cash and Cash Equivalents [Table]",
        "terseLabel": "Schedule of Cash and Cash Equivalents [Table]"
       }
      }
     },
     "localname": "ScheduleOfCashAndCashEquivalentsTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfCashAndCashEquivalentsTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the components of cash and cash equivalents.",
        "label": "Schedule of Cash and Cash Equivalents [Table Text Block]",
        "terseLabel": "Summary of Cash and Cash Equivalents"
       }
      }
     },
     "localname": "ScheduleOfCashAndCashEquivalentsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock": {
     "auth_ref": [
      "r122"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the components of income tax expense attributable to continuing operations for each year presented including, but not limited to: current tax expense (benefit), deferred tax expense (benefit), investment tax credits, government grants, the benefits of operating loss carryforwards, tax expense that results from allocating certain tax benefits either directly to contributed capital or to reduce goodwill or other noncurrent intangible assets of an acquired entity, adjustments of a deferred tax liability or asset for enacted changes in tax laws or rates or a change in the tax status of the entity, and adjustments of the beginning-of-the-year balances of a valuation allowance because of a change in circumstances that causes a change in judgment about the realizability of the related deferred tax asset in future years.",
        "label": "Schedule of Components of Income Tax Expense (Benefit) [Table Text Block]",
        "terseLabel": "Schedule of Components of Income Tax Expense (Benefit)"
       }
      }
     },
     "localname": "ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock": {
     "auth_ref": [
      "r119"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the components of net deferred tax asset or liability recognized in an entity's statement of financial position, including the following: the total of all deferred tax liabilities, the total of all deferred tax assets, the total valuation allowance recognized for deferred tax assets.",
        "label": "Schedule of Deferred Tax Assets and Liabilities [Table Text Block]",
        "terseLabel": "Schedule of Deferred Tax Assets and Liabilities"
       }
      }
     },
     "localname": "ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock": {
     "auth_ref": [
      "r610"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of an entity's basic and diluted earnings per share calculations, including a reconciliation of numerators and denominators of the basic and diluted per-share computations for income from continuing operations.",
        "label": "Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]",
        "verboseLabel": "Schedule of Net Loss Per Share"
       }
      }
     },
     "localname": "ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/NetIncomePerCommonShareTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock": {
     "auth_ref": [
      "r114"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the reconciliation using percentage or dollar amounts of the reported amount of income tax expense attributable to continuing operations for the year to the amount of income tax expense that would result from applying domestic federal statutory tax rates to pretax income from continuing operations.",
        "label": "Schedule of Effective Income Tax Rate Reconciliation [Table Text Block]",
        "terseLabel": "Schedule of Effective Income Tax Rate Reconciliation"
       }
      }
     },
     "localname": "ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock": {
     "auth_ref": [
      "r63"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the names of foreign countries in which material long-lived assets other than financial instruments, long-term customer relationships of a financial institution, mortgage and other servicing rights, deferred policy acquisition costs, and deferred tax assets are located, and amount of such long-lived assets located in that country or foreign geographic area.",
        "label": "Schedule of Disclosure on Geographic Areas, Long-Lived Assets in Individual Foreign Countries by Country [Table Text Block]",
        "terseLabel": "Property and Equipment by Geographic Region"
       }
      }
     },
     "localname": "ScheduleOfEntityWideDisclosureOnGeographicAreasLongLivedAssetsInIndividualForeignCountriesByCountryTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable": {
     "auth_ref": [
      "r73",
      "r75",
      "r507"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.",
        "label": "Schedule of Finite-Lived Intangible Assets [Table]",
        "terseLabel": "Schedule of Finite-Lived Intangible Assets [Table]"
       }
      }
     },
     "localname": "ScheduleOfFiniteLivedIntangibleAssetsTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsIntangibleAssetAcquisitionDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock": {
     "auth_ref": [
      "r601"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of income before income tax between domestic and foreign jurisdictions.",
        "label": "Schedule of Income before Income Tax, Domestic and Foreign [Table Text Block]",
        "terseLabel": "Schedule of Income before Income Tax, Domestic and Foreign"
       }
      }
     },
     "localname": "ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfInventoryCurrentTableTextBlock": {
     "auth_ref": [
      "r0",
      "r11",
      "r12",
      "r13"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the carrying amount as of the balance sheet date of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process.",
        "label": "Schedule of Inventory, Current [Table Text Block]",
        "verboseLabel": "Inventory"
       }
      }
     },
     "localname": "ScheduleOfInventoryCurrentTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfOtherAssetsNoncurrentTextBlock": {
     "auth_ref": [
      "r590"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of noncurrent assets.",
        "label": "Schedule of Other Assets, Noncurrent [Table Text Block]",
        "terseLabel": "Schedule of Other Assets, Noncurrent"
       }
      }
     },
     "localname": "ScheduleOfOtherAssetsNoncurrentTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock": {
     "auth_ref": [
      "r90"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the changes in the guarantor's aggregate product warranty liability, including the beginning balance of the aggregate product warranty liability, the aggregate reductions in that liability for payments made (in cash or in kind) under the warranty, the aggregate changes in the liability for accruals related to product warranties issued during the reporting period, the aggregate changes in the liability for accruals related to preexisting warranties (including adjustments related to changes in estimates), and the ending balance of the aggregate product warranty liability.",
        "label": "Schedule of Product Warranty Liability [Table Text Block]",
        "verboseLabel": "Schedule of Product Warranty Liability"
       }
      }
     },
     "localname": "ScheduleOfProductWarrantyLiabilityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfPropertyPlantAndEquipmentTable": {
     "auth_ref": [
      "r79"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of information about physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation.",
        "label": "Property, Plant and Equipment [Table]",
        "terseLabel": "Schedule of Property, Plant and Equipment [Table]"
       }
      }
     },
     "localname": "ScheduleOfPropertyPlantAndEquipmentTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsPropertyandEquipmentnetDetails",
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesUsefulLivesofPropertyandEquipmentDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfRestructuringAndRelatedCostsTable": {
     "auth_ref": [
      "r301",
      "r302",
      "r303",
      "r304",
      "r307",
      "r308",
      "r309"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Table presenting the description of the restructuring costs, such as the expected cost; the costs incurred during the period; the cumulative costs incurred as of the balance sheet date; the income statement caption within which the restructuring charges recognized for the period are included; and the amount of and periodic changes to an entity's restructuring reserve that occurred during the period associated with the exit from or disposal of business activities or restructurings for each major type of cost by type of restructuring.",
        "label": "Schedule of Restructuring and Related Costs [Table]",
        "terseLabel": "Schedule of Restructuring and Related Costs [Table]"
       }
      }
     },
     "localname": "ScheduleOfRestructuringAndRelatedCostsTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsRestructuringDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable": {
     "auth_ref": [
      "r29",
      "r65"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule of material long-lived assets (excluding financial instruments, customer relationships with financial institutions, mortgage and other servicing rights, deferred policy acquisition costs, and deferred taxes assets) located in identified geographic areas and/or the amount of revenue from external customers attributed to that country from which revenue is material. An entity may also provide subtotals of geographic information about groups of countries.",
        "label": "Schedule of Revenues from External Customers and Long-Lived Assets [Table]",
        "terseLabel": "Schedule of Revenues from External Customers and Long-Lived Assets [Table]"
       }
      }
     },
     "localname": "ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomersPropertyandEquipmentbyGeographicRegionDetails",
      "http://www.calix.com/role/RevenuefromContractswithCustomersRevenuebyGeographicRegionDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable": {
     "auth_ref": [
      "r358",
      "r360",
      "r362",
      "r363",
      "r364",
      "r366",
      "r367",
      "r368",
      "r369",
      "r370",
      "r371",
      "r372",
      "r373",
      "r374",
      "r375",
      "r376",
      "r377",
      "r378",
      "r379",
      "r380",
      "r381",
      "r382",
      "r383",
      "r386",
      "r387",
      "r388",
      "r389",
      "r390"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of information about share-based payment arrangement.",
        "label": "Schedule of Share-Based Compensation Arrangements by Share-Based Payment Award [Table]",
        "terseLabel": "Schedule of Share-based Compensation Arrangements by Share-based Payment Award [Table]"
       }
      }
     },
     "localname": "ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityAssumptionsDetails",
      "http://www.calix.com/role/StockholdersEquityESPPDetails",
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails",
      "http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails",
      "http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails",
      "http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails",
      "http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails",
      "http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock": {
     "auth_ref": [
      "r100",
      "r101",
      "r103"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure for stock option plans. Includes, but is not limited to, outstanding awards at beginning and end of year, grants, exercises, forfeitures, and weighted-average grant date fair value.",
        "label": "Share-Based Payment Arrangement, Option, Activity [Table Text Block]",
        "terseLabel": "Schedule of Stock Options Activity"
       }
      }
     },
     "localname": "ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock": {
     "auth_ref": [
      "r105"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the significant assumptions used during the year to estimate the fair value of employee stock purchase plans, including, but not limited to: (a) expected term, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions.",
        "label": "Schedule of Share-Based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block]",
        "terseLabel": "Valuation Assumptions, ESPP"
       }
      }
     },
     "localname": "ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock": {
     "auth_ref": [
      "r105"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the significant assumptions used during the year to estimate the fair value of stock options, including, but not limited to: (a) expected term of share options and similar instruments, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions.",
        "label": "Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]",
        "verboseLabel": "Valuation Assumptions, Stock Options"
       }
      }
     },
     "localname": "ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock": {
     "auth_ref": [
      "r106"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of cost not yet recognized and weighted-average period over which cost is expected to be recognized for nonvested award under share-based payment arrangement.",
        "label": "Share-Based Payment Arrangement, Nonvested Award, Cost [Table Text Block]",
        "terseLabel": "Schedule of Unrecognized Compensation Cost"
       }
      }
     },
     "localname": "ScheduleOfUnrecognizedCompensationCostNonvestedAwardsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SegmentReportingDisclosureTextBlock": {
     "auth_ref": [
      "r245",
      "r246",
      "r247",
      "r251",
      "r252",
      "r256",
      "r260",
      "r261",
      "r262",
      "r263",
      "r264",
      "r267",
      "r268",
      "r269"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for reporting segments including data and tables. Reportable segments include those that meet any of the following quantitative thresholds a) it's reported revenue, including sales to external customers and intersegment sales or transfers is 10 percent or more of the combined revenue, internal and external, of all operating segments b) the absolute amount of its reported profit or loss is 10 percent or more of the greater, in absolute amount of 1) the combined reported profit of all operating segments that did not report a loss or 2) the combined reported loss of all operating segments that did report a loss c) its assets are 10 percent or more of the combined assets of all operating segments.",
        "label": "Segment Reporting Disclosure [Text Block]",
        "terseLabel": "Revenue from Contracts with Customers"
       }
      }
     },
     "localname": "SegmentReportingDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/RevenuefromContractswithCustomers"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SellingAndMarketingExpense": {
     "auth_ref": [],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss": {
       "order": 3.0,
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate total amount of expenses directly related to the marketing or selling of products or services.",
        "label": "Selling and Marketing Expense",
        "verboseLabel": "Sales and marketing"
       }
      }
     },
     "localname": "SellingAndMarketingExpense",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_SellingAndMarketingExpenseMember": {
     "auth_ref": [
      "r32"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Primary financial statement caption encompassing selling and marketing expense.",
        "label": "Selling and Marketing Expense [Member]",
        "verboseLabel": "Sales and marketing"
       }
      }
     },
     "localname": "SellingAndMarketingExpenseMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensation": {
     "auth_ref": [
      "r47"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows": {
       "order": 3.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of noncash expense for share-based payment arrangement.",
        "label": "Share-Based Payment Arrangement, Noncash Expense",
        "verboseLabel": "Stock-based compensation"
       }
      }
     },
     "localname": "ShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows",
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1": {
     "auth_ref": [
      "r572"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Estimated period over which an employee is required to provide service in exchange for the equity-based payment award, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Award Requisite Service Period",
        "terseLabel": "Award requisite service period"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1": {
     "auth_ref": [
      "r572"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Period over which grantee's right to exercise award under share-based payment arrangement is no longer contingent on satisfaction of service or performance condition, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, combination of market, performance or service condition.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Award Vesting Period",
        "terseLabel": "Vesting period"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r377"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value",
        "verboseLabel": "Weighted-average grant date fair value per share"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions and Methodology [Abstract]",
        "verboseLabel": "Weighted average assumptions used to estimate fair value of stock options"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsAndMethodologyAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityAssumptionsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate": {
     "auth_ref": [
      "r387"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The estimated measure of the percentage by which a share price is expected to fluctuate during a period. Volatility also may be defined as a probability-weighted measure of the dispersion of returns about the mean. The volatility of a share price is the standard deviation of the continuously compounded rates of return on the share over a specified period. That is the same as the standard deviation of the differences in the natural logarithms of the stock prices plus dividends, if any, over the period.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Volatility Rate",
        "verboseLabel": "Expected volatility"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityAssumptionsDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate": {
     "auth_ref": [
      "r389"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The risk-free interest rate assumption that is used in valuing an option on its own shares.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Risk Free Interest Rate",
        "verboseLabel": "Risk-free interest rate"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityAssumptionsDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award [Line Items]"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityAssumptionsDetails",
      "http://www.calix.com/role/StockholdersEquityESPPDetails",
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails",
      "http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails",
      "http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails",
      "http://www.calix.com/role/StockholdersEquityStockBasedCompensationExpenseDetails",
      "http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails",
      "http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate": {
     "auth_ref": [
      "r107"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The highest percentage of annual salary that an employee is permitted to utilize with respect to the plan.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Maximum Employee Subscription Rate",
        "terseLabel": "Maximum employee subscription rate"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumEmployeeSubscriptionRate",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee": {
     "auth_ref": [
      "r107"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The highest quantity of shares an employee can purchase under the plan per period.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Maximum Number of Shares Per Employee",
        "terseLabel": "Maximum number of shares employee can purchase during offering period"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardMaximumNumberOfSharesPerEmployee",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of additional shares authorized for issuance under share-based payment arrangement.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Number of Additional Shares Authorized",
        "terseLabel": "Number of additional shares authorized (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized": {
     "auth_ref": [
      "r573"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of shares authorized for issuance under share-based payment arrangement.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Number of Shares Authorized",
        "terseLabel": "Number of shares authorized (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant": {
     "auth_ref": [
      "r107"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The difference between the maximum number of shares (or other type of equity) authorized for issuance under the plan (including the effects of amendments and adjustments), and the sum of: 1) the number of shares (or other type of equity) already issued upon exercise of options or other equity-based awards under the plan; and 2) shares (or other type of equity) reserved for issuance on granting of outstanding awards, net of cancellations and forfeitures, if applicable.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Number of Shares Available for Grant",
        "terseLabel": "Shares available for future grant",
        "verboseLabel": "Shares available for future grant under 2019 Plan (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails",
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails",
      "http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Additional Disclosures [Abstract]",
        "terseLabel": "Stock Options, Additional Disclosures"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber": {
     "auth_ref": [
      "r368"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of shares into which fully or partially vested stock options outstanding as of the balance sheet date can be currently converted under the option plan.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Number",
        "terseLabel": "Stock options exercisable (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice": {
     "auth_ref": [
      "r368"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The weighted-average price as of the balance sheet date at which grantees can acquire the shares reserved for issuance on vested portions of options outstanding and currently exercisable under the stock option plan.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Weighted Average Exercise Price",
        "terseLabel": "Stock options exercisable (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue": {
     "auth_ref": [
      "r381"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of accumulated difference between fair value of underlying shares on dates of exercise and exercise price on options exercised (or share units converted) into shares.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period, Intrinsic Value",
        "terseLabel": "Total intrinsic value for exercised stock options"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod": {
     "auth_ref": [
      "r372"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of shares under options that were cancelled during the reporting period as a result of occurrence of a terminating event specified in contractual agreements pertaining to the stock option plan.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Forfeitures in Period",
        "negatedTerseLabel": "Stock options forfeited (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross": {
     "auth_ref": [
      "r370"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Gross number of share options (or share units) granted during the period.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Gross",
        "verboseLabel": "Stock options granted (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails",
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r380"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The weighted average grant-date fair value of options granted during the reporting period as calculated by applying the disclosed option pricing methodology.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value",
        "terseLabel": "Weighted-average grant date fair value per share, stock options (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails",
      "http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue": {
     "auth_ref": [
      "r107"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount by which the current fair value of the underlying stock exceeds the exercise price of options outstanding.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Intrinsic Value",
        "terseLabel": "Aggregate intrinsic value, stock options outstanding"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber": {
     "auth_ref": [
      "r366",
      "r367"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of options outstanding, including both vested and non-vested options.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Number",
        "periodEndLabel": "Stock options outstanding, ending (in shares)",
        "periodStartLabel": "Stock options outstanding, beginning (in shares)",
        "terseLabel": "Stock options outstanding (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails",
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding [Roll Forward]",
        "terseLabel": "Stock Options, Number of Shares:"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice": {
     "auth_ref": [
      "r366",
      "r367"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average price at which grantees can acquire the shares reserved for issuance under the stock option plan.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price",
        "periodEndLabel": "Stock options outstanding, ending (in dollars per share)",
        "periodStartLabel": "Stock options outstanding, beginning (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price [Abstract]",
        "terseLabel": "Stock Options, Weighted-Average Exercise Price Per Share:"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue": {
     "auth_ref": [
      "r382"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount by which current fair value of underlying stock exceeds exercise price of fully vested and expected to vest options outstanding. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested and Expected to Vest, Outstanding, Aggregate Intrinsic Value",
        "terseLabel": "Aggregate intrinsic value, stock options vested and expected to vest"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber": {
     "auth_ref": [
      "r382"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of fully vested and expected to vest options outstanding that can be converted into shares under option plan. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested and Expected to Vest, Outstanding, Number",
        "terseLabel": "Stock options vested and expected to vest (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice": {
     "auth_ref": [
      "r382"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted-average exercise price, at which grantee can acquire shares reserved for issuance, for fully vested and expected to vest options outstanding. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested and Expected to Vest, Outstanding, Weighted Average Exercise Price",
        "terseLabel": "Stock options vested and expected to vest (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod": {
     "auth_ref": [
      "r107"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of shares issued under share-based payment arrangement.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Shares Issued in Period",
        "terseLabel": "Shares issued in period"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward": {
     "auth_ref": [
      "r670"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of shares purchased for issuance under share-based payment arrangement.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Shares Purchased for Award",
        "terseLabel": "Shares purchased for award"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain": {
     "auth_ref": [
      "r362",
      "r363",
      "r364",
      "r366",
      "r367",
      "r368",
      "r369",
      "r370",
      "r371",
      "r372",
      "r373",
      "r374",
      "r375",
      "r376",
      "r377",
      "r378",
      "r379",
      "r380",
      "r381",
      "r382",
      "r383",
      "r386",
      "r387",
      "r388",
      "r389",
      "r390"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Award under share-based payment arrangement.",
        "label": "Award Type [Domain]",
        "terseLabel": "Award Type [Domain]"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityAssumptionsDetails",
      "http://www.calix.com/role/StockholdersEquityESPPDetails",
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails",
      "http://www.calix.com/role/StockholdersEquityFairValueofAwardsGrantedDetails",
      "http://www.calix.com/role/StockholdersEquitySharesReservedForFutureIssuanceDetails",
      "http://www.calix.com/role/StockholdersEquityUnrecognizedStockbasedCompensationExpensesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [
      "r371"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average price at which option holders acquired shares when converting their stock options into shares.",
        "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Exercises in Period, Weighted Average Exercise Price",
        "verboseLabel": "Stock options exercised (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [
      "r372"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average price at which grantees could have acquired the underlying shares with respect to stock options that were terminated.",
        "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Forfeitures in Period, Weighted Average Exercise Price",
        "terseLabel": "Stock options forfeited (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [
      "r370"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average per share amount at which grantees can acquire shares of common stock by exercise of options.",
        "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Grants in Period, Weighted Average Exercise Price",
        "terseLabel": "Stock options granted (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationAwardTrancheOneMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "First portion of award under share-based payment arrangement differentiated by vesting feature, including, but not limited to, performance measure or service period.",
        "label": "Share-Based Payment Arrangement, Tranche One [Member]",
        "terseLabel": "Period One"
       }
      }
     },
     "localname": "ShareBasedCompensationAwardTrancheOneMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationAwardTrancheTwoMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Second portion of award under share-based payment arrangement differentiated by vesting feature, including, but not limited to, performance measure or service period.",
        "label": "Share-Based Payment Arrangement, Tranche Two [Member]",
        "terseLabel": "Period Two"
       }
      }
     },
     "localname": "ShareBasedCompensationAwardTrancheTwoMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy": {
     "auth_ref": [
      "r365",
      "r384",
      "r385",
      "r386",
      "r387",
      "r390",
      "r396",
      "r397"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for award under share-based payment arrangement. Includes, but is not limited to, methodology and assumption used in measuring cost.",
        "label": "Share-Based Payment Arrangement [Policy Text Block]",
        "terseLabel": "Stock-Based Compensation"
       }
      }
     },
     "localname": "ShareBasedCompensationOptionAndIncentivePlansPolicy",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage": {
     "auth_ref": [
      "r643"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of vesting of award under share-based payment arrangement.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Award Vesting Rights, Percentage",
        "terseLabel": "Award vesting rights, percentage"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1": {
     "auth_ref": [
      "r386"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Expected term of award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Term",
        "verboseLabel": "Expected life"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityAssumptionsDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1": {
     "auth_ref": [
      "r107"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of difference between fair value of the underlying shares reserved for issuance and exercise price of vested portions of options outstanding and currently exercisable.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Intrinsic Value",
        "terseLabel": "Aggregate intrinsic value, stock options exercisable"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1": {
     "auth_ref": [
      "r107"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average remaining contractual term for vested portions of options outstanding and currently exercisable or convertible, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Weighted Average Remaining Contractual Term",
        "terseLabel": "Weighted-average remaining contractual term, stock options exercisable"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2": {
     "auth_ref": [
      "r104"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average remaining contractual term for option awards outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term",
        "terseLabel": "Weighted-average remaining contractual term, stock options outstanding"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1": {
     "auth_ref": [
      "r382"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average remaining contractual term for fully vested and expected to vest options outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested and Expected to Vest, Outstanding, Weighted Average Remaining Contractual Term",
        "terseLabel": "Weighted-average remaining contractual term, stock options vested and expected to vest"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Purchase price of common stock expressed as a percentage of its fair value.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Purchase Price of Common Stock, Percent",
        "terseLabel": "Price of common stock purchased under the ESPP"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareholdersEquityAndShareBasedPaymentsTextBlock": {
     "auth_ref": [
      "r95",
      "r112"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for shareholders' equity and share-based payment arrangement. Includes, but is not limited to, disclosure of policy and terms of share-based payment arrangement, deferred compensation arrangement, and employee stock purchase plan (ESPP).",
        "label": "Shareholders' Equity and Share-Based Payments [Text Block]",
        "verboseLabel": "Stockholders' Equity"
       }
      }
     },
     "localname": "ShareholdersEquityAndShareBasedPaymentsTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquity"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_StandardProductWarrantyPolicy": {
     "auth_ref": [
      "r87"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for standard warranties including the methodology for measuring the liability.",
        "label": "Standard Product Warranty, Policy [Policy Text Block]",
        "terseLabel": "Warranty and Retrofit"
       }
      }
     },
     "localname": "StandardProductWarrantyPolicy",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_StateAndLocalJurisdictionMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Designated tax department of a state or local government entitled to levy and collect income taxes from the entity.",
        "label": "State and Local Jurisdiction [Member]",
        "terseLabel": "State"
       }
      }
     },
     "localname": "StateAndLocalJurisdictionMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTextualDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_StatementEquityComponentsAxis": {
     "auth_ref": [
      "r21",
      "r92",
      "r159",
      "r187",
      "r188",
      "r189",
      "r210",
      "r211",
      "r212",
      "r214",
      "r220",
      "r222",
      "r239",
      "r277",
      "r330",
      "r393",
      "r394",
      "r395",
      "r422",
      "r423",
      "r440",
      "r452",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457",
      "r470",
      "r522",
      "r523",
      "r524"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by component of equity.",
        "label": "Equity Components [Axis]",
        "terseLabel": "Equity Components [Axis]"
       }
      }
     },
     "localname": "StatementEquityComponentsAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails",
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Statement [Line Items]",
        "terseLabel": "Statement [Line Items]"
       }
      }
     },
     "localname": "StatementLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementOfCashFlowsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Cash Flows [Abstract]",
        "terseLabel": "Statement of Cash Flows [Abstract]"
       }
      }
     },
     "localname": "StatementOfCashFlowsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementOfFinancialPositionAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Financial Position [Abstract]",
        "terseLabel": "Statement of Financial Position [Abstract]"
       }
      }
     },
     "localname": "StatementOfFinancialPositionAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementOfStockholdersEquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Stockholders' Equity [Abstract]",
        "terseLabel": "Statement of Stockholders' Equity [Abstract]"
       }
      }
     },
     "localname": "StatementOfStockholdersEquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementTable": {
     "auth_ref": [
      "r210",
      "r211",
      "r212",
      "r239",
      "r506"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule reflecting a Statement of Income, Statement of Cash Flows, Statement of Financial Position, Statement of Shareholders' Equity and Other Comprehensive Income, or other statement as needed.",
        "label": "Statement [Table]",
        "terseLabel": "Statement [Table]"
       }
      }
     },
     "localname": "StatementTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan": {
     "auth_ref": [
      "r4",
      "r5",
      "r92",
      "r93",
      "r111"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of shares of capital stock issued (purchased by employees) in connection with an employee stock ownership plan.",
        "label": "Stock Issued During Period, Shares, Employee Stock Ownership Plan",
        "terseLabel": "Shares purchased under ESPP (in shares)"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityESPPDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesNewIssues": {
     "auth_ref": [
      "r4",
      "r5",
      "r92",
      "r93"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of new stock issued during the period.",
        "label": "Stock Issued During Period, Shares, New Issues",
        "terseLabel": "Issuance of common stock in connection with public offering, net of expenses (in shares)"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesNewIssues",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation": {
     "auth_ref": [
      "r4",
      "r5",
      "r92",
      "r93"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP).",
        "label": "Shares Issued, Shares, Share-Based Payment Arrangement, after Forfeiture",
        "terseLabel": "Issuance of common stock under equity incentive plans, net of forfeitures (in shares)"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised": {
     "auth_ref": [
      "r4",
      "r5",
      "r92",
      "r93",
      "r371"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of share options (or share units) exercised during the current period.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period",
        "negatedTerseLabel": "Stock options exercised (in shares)"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesStockOptionsExercised",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueNewIssues": {
     "auth_ref": [
      "r4",
      "r5",
      "r92",
      "r93"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Equity impact of the value of new stock issued during the period. Includes shares issued in an initial public offering or a secondary public offering.",
        "label": "Stock Issued During Period, Value, New Issues",
        "terseLabel": "Issuance of common stock in connection with public offering, net of expenses"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueNewIssues",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation": {
     "auth_ref": [
      "r4",
      "r5",
      "r93",
      "r102"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Value, after forfeiture, of shares issued under share-based payment arrangement. Excludes employee stock ownership plan (ESOP).",
        "label": "Shares Issued, Value, Share-Based Payment Arrangement, after Forfeiture",
        "terseLabel": "Issuance of common stock under equity incentive plans, net of forfeitures"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised": {
     "auth_ref": [
      "r21",
      "r92",
      "r93"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Value of stock issued as a result of the exercise of stock options.",
        "label": "Stock Issued During Period, Value, Stock Options Exercised",
        "terseLabel": "Issuance of common stock under equity incentive plans, net of forfeitures"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueStockOptionsExercised",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOptionsActivityDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockRepurchaseProgramAuthorizedAmount1": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of stock repurchase plan authorized.",
        "label": "Stock Repurchase Program, Authorized Amount",
        "terseLabel": "Stock repurchase program, authorized amount"
       }
      }
     },
     "localname": "StockRepurchaseProgramAuthorizedAmount1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockRepurchaseProgramDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockRepurchaseProgramPeriodInForce1": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Period which shares may be purchased under a stock repurchase plan authorized by an entity's Board of Directors, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Stock Repurchase Program, Period in Force",
        "terseLabel": "Stock repurchase program, period authorized"
       }
      }
     },
     "localname": "StockRepurchaseProgramPeriodInForce1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockRepurchaseProgramDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_StockRepurchasedAndRetiredDuringPeriodValue": {
     "auth_ref": [
      "r4",
      "r5",
      "r92",
      "r93"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Equity impact of the value of stock that has been repurchased and retired during the period. The excess of the purchase price over par value can be charged against retained earnings (once the excess is fully allocated to additional paid in capital).",
        "label": "Stock Repurchased and Retired During Period, Value",
        "negatedLabel": "Treasury stock retirement"
       }
      }
     },
     "localname": "StockRepurchasedAndRetiredDuringPeriodValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockholdersEquity": {
     "auth_ref": [
      "r5",
      "r8",
      "r9",
      "r67",
      "r576",
      "r600",
      "r617",
      "r680"
     ],
     "calculation": {
      "http://www.calix.com/role/ConsolidatedBalanceSheets": {
       "order": 2.0,
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.",
        "label": "Stockholders' Equity Attributable to Parent",
        "periodEndLabel": "Balance at end of period",
        "periodStartLabel": "Balance at beginning of period",
        "totalLabel": "Total stockholders\u2019 equity"
       }
      }
     },
     "localname": "StockholdersEquity",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/AccumulatedOtherComprehensiveLossDetails",
      "http://www.calix.com/role/ConsolidatedBalanceSheets",
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockholdersEquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Stockholders' Equity Attributable to Parent [Abstract]",
        "verboseLabel": "Stockholders\u2019 equity:"
       }
      }
     },
     "localname": "StockholdersEquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedBalanceSheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_SubleaseIncome": {
     "auth_ref": [
      "r464",
      "r575"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of sublease income excluding finance and operating lease expense.",
        "label": "Sublease Income",
        "terseLabel": "Sublease Income"
       }
      }
     },
     "localname": "SubleaseIncome",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CommitmentsandContingenciesTextualDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_SubsequentEventMember": {
     "auth_ref": [
      "r458",
      "r472"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Identifies event that occurred after the balance sheet date but before financial statements are issued or available to be issued.",
        "label": "Subsequent Event [Member]",
        "terseLabel": "Subsequent Event"
       }
      }
     },
     "localname": "SubsequentEventMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SubsequentEventTypeAxis": {
     "auth_ref": [
      "r458",
      "r472"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by event that occurred after the balance sheet date but before financial statements are issued or available to be issued.",
        "label": "Subsequent Event Type [Axis]",
        "terseLabel": "Subsequent Event Type [Axis]"
       }
      }
     },
     "localname": "SubsequentEventTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_SubsequentEventTypeDomain": {
     "auth_ref": [
      "r458",
      "r472"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Event that occurred after the balance sheet date but before financial statements are issued or available to be issued.",
        "label": "Subsequent Event Type [Domain]",
        "terseLabel": "Subsequent Event Type [Domain]"
       }
      }
     },
     "localname": "SubsequentEventTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SubsidiarySaleOfStockAxis": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of sale of the entity's stock.",
        "label": "Sale of Stock [Axis]",
        "terseLabel": "Sale of Stock [Axis]"
       }
      }
     },
     "localname": "SubsidiarySaleOfStockAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityStockOfferingTreasuryStockRetirementPreferredStockandCommonStockDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_SummaryOfIncomeTaxContingenciesTextBlock": {
     "auth_ref": [
      "r115",
      "r117",
      "r118"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure for tax positions taken in the tax returns filed or to be filed for which it is more likely than not that the tax position will not be sustained upon examination by taxing authorities and other income tax contingencies. Includes, but is not limited to, interest and penalties, reconciliation of unrecognized tax benefits, unrecognized tax benefits that would affect the effective tax rate, tax years that remain subject to examination by tax jurisdictions, and information about positions for which it is reasonably possible that amounts unrecognized will significantly change within 12 months.",
        "label": "Summary of Income Tax Contingencies [Table Text Block]",
        "terseLabel": "Unrecognized Tax Benefits Activity"
       }
      }
     },
     "localname": "SummaryOfIncomeTaxContingenciesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SupplementalBalanceSheetDisclosuresTextBlock": {
     "auth_ref": [
      "r593"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for supplemental balance sheet disclosures, including descriptions and amounts for assets, liabilities, and equity.",
        "label": "Supplemental Balance Sheet Disclosures [Text Block]",
        "verboseLabel": "Balance Sheet Details"
       }
      }
     },
     "localname": "SupplementalBalanceSheetDisclosuresTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetails"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SupplementalCashFlowInformationAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Supplemental Cash Flow Information [Abstract]",
        "terseLabel": "Supplemental disclosures of cash flow information:"
       }
      }
     },
     "localname": "SupplementalCashFlowInformationAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofCashFlows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_TaxCreditCarryforwardAmount": {
     "auth_ref": [
      "r120"
     ],
     "calculation": {
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of the tax credit carryforward, before tax effects, available to reduce future taxable income under enacted tax laws.",
        "label": "Tax Credit Carryforward, Amount",
        "terseLabel": "Tax credit carryforwards",
        "verboseLabel": "Research and development credits"
       }
      }
     },
     "localname": "TaxCreditCarryforwardAmount",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesComponentsofDeferredTaxAssetsandLiabilitiesDetails",
      "http://www.calix.com/role/IncomeTaxesTextualDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_TextBlockAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Text Block [Abstract]"
       }
      }
     },
     "localname": "TextBlockAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain": {
     "auth_ref": [
      "r273",
      "r274",
      "r327",
      "r329",
      "r439",
      "r473",
      "r474",
      "r475",
      "r476",
      "r477",
      "r478",
      "r479",
      "r480",
      "r481",
      "r482",
      "r483",
      "r484",
      "r485",
      "r486",
      "r487",
      "r488",
      "r489",
      "r490",
      "r491",
      "r492",
      "r493",
      "r494",
      "r495",
      "r496",
      "r497",
      "r498",
      "r499",
      "r500",
      "r501",
      "r502",
      "r614",
      "r615",
      "r616",
      "r703",
      "r704",
      "r705",
      "r706",
      "r707",
      "r708",
      "r709"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Instrument or contract that imposes a contractual obligation to deliver cash or another financial instrument or to exchange other financial instruments on potentially unfavorable terms and conveys a contractual right to receive cash or another financial instrument or to exchange other financial instruments on potentially favorable terms.",
        "label": "Financial Instruments [Domain]",
        "terseLabel": "Financial Instruments [Domain]"
       }
      }
     },
     "localname": "TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails",
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TreasuryStockCommonMember": {
     "auth_ref": [
      "r94"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Previously issued common shares repurchased by the issuing entity and held in treasury.",
        "label": "Treasury Stock, Common [Member]",
        "terseLabel": "Treasury Stock"
       }
      }
     },
     "localname": "TreasuryStockCommonMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofStockholdersEquity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_USGovernmentAgenciesDebtSecuritiesMember": {
     "auth_ref": [
      "r557",
      "r568",
      "r699"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Debentures, notes, and other debt securities issued by US government agencies, for example, but not limited to, Government National Mortgage Association (GNMA or Ginnie Mae). Excludes US treasury securities and debt issued by government-sponsored Enterprises (GSEs), for example, but is not limited to, Federal Home Loan Mortgage Corporation (FHLMC or Freddie Mac), Federal National Mortgage Association (FNMA or Fannie Mae), and the Federal Home Loan Bank (FHLB).",
        "label": "US Government Agencies Debt Securities [Member]",
        "terseLabel": "U.S. government agency securities"
       }
      }
     },
     "localname": "USGovernmentAgenciesDebtSecuritiesMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails",
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_USGovernmentDebtSecuritiesMember": {
     "auth_ref": [
      "r699"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Debt securities issued by the United States government.",
        "label": "US Government Debt Securities [Member]",
        "terseLabel": "U.S. government securities"
       }
      }
     },
     "localname": "USGovernmentDebtSecuritiesMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesDetails",
      "http://www.calix.com/role/CashCashEquivalentsandMarketableSecuritiesScheduleofMarketableSecuritiesDetails",
      "http://www.calix.com/role/FairValueMeasurementsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_UnrecognizedTaxBenefits": {
     "auth_ref": [
      "r398",
      "r407"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of unrecognized tax benefits.",
        "label": "Unrecognized Tax Benefits",
        "periodEndLabel": "Balance at end of year",
        "periodStartLabel": "Balance at beginning of year",
        "terseLabel": "Unrecognized tax benefits"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefits",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTextualDetails",
      "http://www.calix.com/role/IncomeTaxesUnrecognizedTaxBenefitsActivityDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions": {
     "auth_ref": [
      "r408"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of decrease in unrecognized tax benefits resulting from tax positions taken in prior period tax returns.",
        "label": "Unrecognized Tax Benefits, Decrease Resulting from Prior Period Tax Positions",
        "negatedTerseLabel": "Reduction for tax positions related to prior year"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesUnrecognizedTaxBenefitsActivityDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued": {
     "auth_ref": [
      "r406"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount accrued for interest on an underpayment of income taxes and penalties related to a tax position claimed or expected to be claimed in the tax return.",
        "label": "Unrecognized Tax Benefits, Income Tax Penalties and Interest Accrued",
        "terseLabel": "Accrued interest or penalties for uncertain income tax"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTextualDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions": {
     "auth_ref": [
      "r409"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in unrecognized tax benefits resulting from tax positions that have been or will be taken in current period tax return.",
        "label": "Unrecognized Tax Benefits, Increase Resulting from Current Period Tax Positions",
        "terseLabel": "Additions for tax positions related to current year"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesUnrecognizedTaxBenefitsActivityDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions": {
     "auth_ref": [
      "r408"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in unrecognized tax benefits resulting from tax positions taken in prior period tax returns.",
        "label": "Unrecognized Tax Benefits, Increase Resulting from Prior Period Tax Positions",
        "terseLabel": "Additions for tax positions related to prior year"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesUnrecognizedTaxBenefitsActivityDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate": {
     "auth_ref": [
      "r410"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The total amount of unrecognized tax benefits that, if recognized, would affect the effective tax rate.",
        "label": "Unrecognized Tax Benefits that Would Impact Effective Tax Rate",
        "terseLabel": "Unrecognized tax benefits that would impact effective tax rate"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsThatWouldImpactEffectiveTaxRate",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTextualDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UseOfEstimates": {
     "auth_ref": [
      "r59",
      "r60",
      "r61",
      "r240",
      "r241",
      "r243",
      "r244"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for the use of estimates in the preparation of financial statements in conformity with generally accepted accounting principles.",
        "label": "Use of Estimates, Policy [Policy Text Block]",
        "terseLabel": "Use of Estimates"
       }
      }
     },
     "localname": "UseOfEstimates",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/DescriptionofBusinessandSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount": {
     "auth_ref": [
      "r416"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in the valuation allowance for a specified deferred tax asset.",
        "label": "Valuation Allowance, Deferred Tax Asset, Increase (Decrease), Amount",
        "terseLabel": "Increase (decrease) in valuation allowance"
       }
      }
     },
     "localname": "ValuationAllowanceDeferredTaxAssetChangeInAmount",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/IncomeTaxesTextualDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesBalance": {
     "auth_ref": [
      "r204",
      "r209"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of valuation and qualifying accounts and reserves.",
        "label": "SEC Schedule, 12-09, Valuation Allowances and Reserves, Amount",
        "periodEndLabel": "Balance at End of Year",
        "periodStartLabel": "Balance at Beginning of Year"
       }
      }
     },
     "localname": "ValuationAllowancesAndReservesBalance",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense": {
     "auth_ref": [
      "r207"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in valuation and qualifying accounts and reserves from charge to cost and expense.",
        "label": "SEC Schedule, 12-09, Valuation Allowances and Reserves, Additions, Charge to Cost and Expense",
        "terseLabel": "Additions Charged to Expenses or Revenue Net of Recoveries"
       }
      }
     },
     "localname": "ValuationAllowancesAndReservesChargedToCostAndExpense",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesDeductions": {
     "auth_ref": [
      "r208"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of decrease in valuation and qualifying accounts and reserves.",
        "label": "SEC Schedule, 12-09, Valuation Allowances and Reserves, Deduction",
        "negatedTerseLabel": "Write Offs and Returns"
       }
      }
     },
     "localname": "ValuationAllowancesAndReservesDeductions",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesDomain": {
     "auth_ref": [
      "r204",
      "r205",
      "r206",
      "r208",
      "r209"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Valuation and qualifying accounts and reserves.",
        "label": "SEC Schedule, 12-09, Valuation Allowances and Reserves [Domain]",
        "terseLabel": "SEC Schedule, 12-09, Valuation Allowances and Reserves [Domain]"
       }
      }
     },
     "localname": "ValuationAllowancesAndReservesDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesTypeAxis": {
     "auth_ref": [
      "r204",
      "r205",
      "r206",
      "r208",
      "r209"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by valuation and qualifying accounts and reserves.",
        "label": "SEC Schedule, 12-09, Valuation Allowances and Reserves Type [Axis]",
        "terseLabel": "SEC Schedule, 12-09, Valuation Allowances and Reserves Type [Axis]"
       }
      }
     },
     "localname": "ValuationAllowancesAndReservesTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/BalanceSheetDetailsAllowanceandProductReturnReserveDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_VestingAxis": {
     "auth_ref": [
      "r643",
      "r644",
      "r645",
      "r646",
      "r647",
      "r648",
      "r649",
      "r650",
      "r651",
      "r652",
      "r653",
      "r654",
      "r655",
      "r656",
      "r657",
      "r658",
      "r659",
      "r660",
      "r661",
      "r662",
      "r663",
      "r664",
      "r665",
      "r666",
      "r667",
      "r668"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by vesting schedule of award under share-based payment arrangement.",
        "label": "Vesting [Axis]",
        "terseLabel": "Vesting [Axis]"
       }
      }
     },
     "localname": "VestingAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_VestingDomain": {
     "auth_ref": [
      "r643",
      "r644",
      "r645",
      "r646",
      "r647",
      "r648",
      "r649",
      "r650",
      "r651",
      "r652",
      "r653",
      "r654",
      "r655",
      "r656",
      "r657",
      "r658",
      "r659",
      "r660",
      "r661",
      "r662",
      "r663",
      "r664",
      "r665",
      "r666",
      "r667",
      "r668"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Vesting schedule of award under share-based payment arrangement.",
        "label": "Vesting [Domain]",
        "terseLabel": "Vesting [Domain]"
       }
      }
     },
     "localname": "VestingDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/StockholdersEquityEquityIncentivePlansDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding": {
     "auth_ref": [
      "r224",
      "r232"
     ],
     "calculation": {
      "http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period.",
        "label": "Weighted Average Number of Shares Outstanding, Diluted",
        "terseLabel": "Diluted (in shares)",
        "totalLabel": "Weighted-average common shares - diluted (in shares)"
       }
      }
     },
     "localname": "WeightedAverageNumberOfDilutedSharesOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss",
      "http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic": {
     "auth_ref": [
      "r223",
      "r232"
     ],
     "calculation": {
      "http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period.",
        "label": "Weighted Average Number of Shares Outstanding, Basic",
        "terseLabel": "Basic (in shares)",
        "verboseLabel": "Weighted-average common shares - basic (in shares)"
       }
      }
     },
     "localname": "WeightedAverageNumberOfSharesOutstandingBasic",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/ConsolidatedStatementsofComprehensiveIncomeLoss",
      "http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingBasicAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Weighted Average Number of Shares Outstanding, Basic [Abstract]",
        "verboseLabel": "Denominator:"
       }
      }
     },
     "localname": "WeightedAverageNumberOfSharesOutstandingBasicAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.calix.com/role/NetIncomePerCommonShareBasicandDilutedSharesCalculationDetails"
     ],
     "xbrltype": "stringItemType"
    }
   },
   "unitCount": 5
  }
 },
 "std_ref": {
  "r0": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=6361739&loc=d3e7789-107766",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r1": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(25))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r10": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(32))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r100": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r101": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r102": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r103": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r104": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r105": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r106": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r107": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r108": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=SL79508275-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r109": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=126964447&loc=d3e11149-113907",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r11": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(a))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r110": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=126964447&loc=d3e11178-113907",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r111": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "40",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=109244457&loc=d3e16649-113920",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r112": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "718",
   "URI": "https://asc.fasb.org/topic&trid=2228938",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r113": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "730",
   "URI": "https://asc.fasb.org/extlink&oid=6420194&loc=d3e21568-108373",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r114": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32687-109319",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r115": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32718-109319",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r116": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32718-109319",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r117": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=SL6600010-109319",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r118": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32840-109319",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r119": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r12": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(b))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r120": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32559-109319",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r121": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32632-109319",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r122": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r123": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.7)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r124": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=126929396&loc=SL4569616-111683",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r125": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=126929396&loc=SL4569643-111683",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r126": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(3)",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=109239629&loc=SL4573702-111684",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r127": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c),(3)",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=109239629&loc=SL4573702-111684",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r128": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=125515794&loc=SL5618551-113959",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r129": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=125515794&loc=SL5624163-113959",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r13": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(c))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r130": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "820",
   "URI": "https://asc.fasb.org/extlink&oid=126976982&loc=d3e19207-110258",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r131": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "820",
   "URI": "https://asc.fasb.org/extlink&oid=126976982&loc=d3e19207-110258",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r132": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "60",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "https://asc.fasb.org/extlink&oid=7493716&loc=d3e21868-110260",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r133": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "https://asc.fasb.org/extlink&oid=123594938&loc=d3e13279-108611",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r134": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "https://asc.fasb.org/extlink&oid=123594938&loc=d3e13531-108611",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r135": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "825",
   "URI": "https://asc.fasb.org/extlink&oid=123594938&loc=d3e13537-108611",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r136": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "https://asc.fasb.org/extlink&oid=123594938&loc=d3e13537-108611",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r137": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "230",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=123444420&loc=d3e33268-110906",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r138": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "20",
   "Topic": "940",
   "URI": "https://asc.fasb.org/extlink&oid=126941158&loc=d3e41242-110953",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r139": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(11))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126897435&loc=d3e534808-122878",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r14": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19(a))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r140": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(15)(2))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126897435&loc=d3e534808-122878",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r141": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(17))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126897435&loc=d3e534808-122878",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r142": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(23))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126897435&loc=d3e534808-122878",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r143": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03.15(5))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126897435&loc=d3e534808-122878",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r144": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03.15)",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126897435&loc=d3e534808-122878",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r145": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03.17)",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126897435&loc=d3e534808-122878",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r146": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(15))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r147": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(22))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r148": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "825",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126941378&loc=d3e61044-112788",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r149": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(15)(b)(2))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r15": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19-26)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r150": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(12))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r151": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(19))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r152": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(4))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r153": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(25))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r154": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(8))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r155": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03.(a),19)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r156": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(18))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r157": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(8))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r158": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "985",
   "URI": "https://asc.fasb.org/extlink&oid=6501960&loc=d3e128462-111756",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r159": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "105",
   "URI": "https://asc.fasb.org/extlink&oid=126987489&loc=SL124442142-165695",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r16": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.20)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r160": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "205",
   "URI": "https://asc.fasb.org/extlink&oid=109222650&loc=SL51721683-107760",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r161": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=124098289&loc=d3e6676-107765",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r162": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=124098289&loc=d3e6904-107765",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r163": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=6361739&loc=d3e7789-107766",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r164": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(1))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r165": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(13))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r166": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(14))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r167": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(15))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r168": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(17))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r169": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(18))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r17": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.21)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r170": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(3)(a)(1))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r171": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(4))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r172": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(4))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r173": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(b))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r174": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r175": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(9))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r176": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669646-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r177": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669646-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r178": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(h)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669646-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r179": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=d3e637-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r18": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.24)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r180": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669686-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r181": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669619-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r182": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669619-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r183": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669619-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r184": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669625-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r185": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669625-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r186": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=124431353&loc=SL116659661-227067",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r187": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=124431353&loc=SL124442407-227067",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r188": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=124431353&loc=SL124442411-227067",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r189": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=124431353&loc=SL124452729-227067",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r19": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.25)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r190": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(21))",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r191": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(24))",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r192": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(25))",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r193": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3151-108585",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r194": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3179-108585",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r195": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3367-108585",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r196": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3521-108585",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r197": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3536-108585",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r198": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126999549&loc=d3e4297-108586",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r199": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(g)(1)(ii))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r2": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(26)(a))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r20": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.29)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r200": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h)(1))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r201": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h)(2))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r202": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r203": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-04(a))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e24072-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r204": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column B))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r205": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column C(1)))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r206": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column C(2)))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r207": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column C)(1))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r208": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column D))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r209": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column E))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r21": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.29-31)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r210": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "23",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124436220&loc=d3e21914-107793",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r211": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124436220&loc=d3e21930-107793",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r212": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124436220&loc=d3e21711-107793",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r213": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(2)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22499-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r214": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(3)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22499-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r215": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22694-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r216": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22694-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r217": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22583-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r218": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22595-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r219": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22644-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r22": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.3,4)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r220": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22644-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r221": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22658-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r222": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22663-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r223": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=d3e1448-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r224": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=d3e1505-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r225": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=d3e1252-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r226": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=d3e1707-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r227": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "23",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=d3e1757-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r228": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=d3e1500-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r229": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "60B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=SL5780133-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r23": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a),(b),(c)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669646-108580",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r230": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "60B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=SL5780133-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r231": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=d3e1337-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r232": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=124432515&loc=d3e3550-109257",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r233": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=124432515&loc=d3e3550-109257",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r234": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=124432515&loc=d3e3630-109257",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r235": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=109243012&loc=SL65017193-207537",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r236": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=128363288&loc=d3e3842-109258",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r237": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "260",
   "URI": "https://asc.fasb.org/topic&trid=2144383",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r238": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "270",
   "URI": "https://asc.fasb.org/extlink&oid=126900757&loc=d3e543-108305",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r239": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "272",
   "URI": "https://asc.fasb.org/extlink&oid=125520817&loc=d3e70191-108054",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r24": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669646-108580",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r240": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e5967-108592",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r241": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e5967-108592",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r242": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e5967-108592",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r243": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6161-108592",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r244": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6191-108592",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r245": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8657-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r246": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8721-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r247": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8721-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r248": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8736-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r249": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8736-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r25": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=d3e637-108580",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r250": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8736-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r251": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8736-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r252": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "26",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8844-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r253": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8906-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r254": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8906-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r255": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8906-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r256": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "31",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8924-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r257": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8933-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r258": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8933-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r259": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8933-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r26": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=d3e681-108580",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r260": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8933-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r261": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8933-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r262": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8933-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r263": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "34",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8981-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r264": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "40",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9031-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r265": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9038-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r266": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9038-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r267": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9038-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r268": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "42",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9054-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r269": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "280",
   "URI": "https://asc.fasb.org/topic&trid=2134510",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r27": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669686-108580",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r270": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=124259787&loc=d3e4428-111522",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r271": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=124259787&loc=d3e4531-111522",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r272": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=123577603&loc=d3e5074-111524",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r273": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "https://asc.fasb.org/extlink&oid=126970911&loc=d3e27232-111563",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r274": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "https://asc.fasb.org/extlink&oid=126970911&loc=SL120269820-111563",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r275": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "320",
   "URI": "https://asc.fasb.org/topic&trid=2196928",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r276": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "323",
   "URI": "https://asc.fasb.org/extlink&oid=114001798&loc=d3e33918-111571",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r277": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=122640432&loc=SL121648383-210437",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r278": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=124255206&loc=SL82895884-210446",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r279": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=124255953&loc=SL82919244-210447",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r28": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=d3e557-108580",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r280": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=124255953&loc=SL82919249-210447",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r281": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=124255953&loc=SL82919253-210447",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r282": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=124255953&loc=SL82919258-210447",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r283": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=124255953&loc=SL82919230-210447",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r284": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=124269663&loc=SL82922888-210455",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r285": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=124269663&loc=SL82922895-210455",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r286": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=124269663&loc=SL82922900-210455",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r287": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "330",
   "URI": "https://asc.fasb.org/extlink&oid=116847112&loc=d3e4492-108314",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r288": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "330",
   "URI": "https://asc.fasb.org/extlink&oid=116847112&loc=d3e4556-108314",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r289": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "330",
   "URI": "https://asc.fasb.org/topic&trid=2126998",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r29": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(1))",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r290": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(b)",
   "Topic": "340",
   "URI": "https://asc.fasb.org/extlink&oid=126905575&loc=SL49131252-203054",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r291": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=99380562&loc=d3e13770-109266",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r292": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=99380562&loc=d3e13777-109266",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r293": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(e)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r294": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13854-109267",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r295": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "https://asc.fasb.org/subtopic&trid=2144439",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r296": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r297": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r298": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(1)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r299": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r3": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(26)(b))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r30": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(10))",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r300": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=109226691&loc=d3e2941-110230",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r301": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(1)",
   "Topic": "420",
   "URI": "https://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r302": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(2)",
   "Topic": "420",
   "URI": "https://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r303": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "420",
   "URI": "https://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r304": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "420",
   "URI": "https://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r305": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.P.3)",
   "Topic": "420",
   "URI": "https://asc.fasb.org/extlink&oid=115931487&loc=d3e140864-122747",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r306": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 5.P.4(b)(2))",
   "Topic": "420",
   "URI": "https://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r307": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.P.4(b)(1))",
   "Topic": "420",
   "URI": "https://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r308": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.P.4(b)(2))",
   "Topic": "420",
   "URI": "https://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r309": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.P.4(d))",
   "Topic": "420",
   "URI": "https://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r31": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(20))",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r310": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "440",
   "URI": "https://asc.fasb.org/extlink&oid=123406679&loc=d3e25336-109308",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r311": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "440",
   "URI": "https://asc.fasb.org/extlink&oid=123406679&loc=d3e25336-109308",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r312": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=121557415&loc=d3e14326-108349",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r313": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=121557415&loc=d3e14435-108349",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r314": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=121557415&loc=d3e14557-108349",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r315": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "20",
   "Subparagraph": "(SAB Topic 5.Y.Q2)",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=27011672&loc=d3e149879-122751",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r316": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "20",
   "Subparagraph": "(SAB Topic 5.Y.Q4)",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=27011672&loc=d3e149879-122751",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r317": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(i))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442526-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r318": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii)(A))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442526-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r319": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(iv))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442526-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r32": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(4))",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r320": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(5))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442526-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r321": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(i))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442552-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r322": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442552-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r323": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442552-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r324": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iv))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442552-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r325": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(5))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442552-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r326": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1D",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495340-112611",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r327": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1I",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495371-112611",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r328": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496158-112644",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r329": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496189-112644",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r33": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.1,2)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r330": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.3-04)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=120397183&loc=d3e187085-122770",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r331": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126919976&loc=SL49130531-203044",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r332": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126919976&loc=SL49130532-203044",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r333": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126919976&loc=SL49130533-203044",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r334": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130556-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r335": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(1)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130556-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r336": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130561-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r337": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130563-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r338": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130563-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r339": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130564-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r34": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.2(a),(d))",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r340": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130566-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r341": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130566-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r342": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130566-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r343": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130566-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r344": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130543-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r345": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130545-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r346": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130549-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r347": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130549-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r348": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "606",
   "URI": "https://asc.fasb.org/topic&trid=49130388",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r349": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(i)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r35": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.4)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r350": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(01)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r351": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r352": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)(A)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r353": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)(B)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r354": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)(C)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r355": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(03)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r356": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "70",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=49170846&loc=d3e28014-114942",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r357": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(d)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=65877416&loc=SL14450657-114947",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r358": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1D",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=126961718&loc=SL116886442-113899",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r359": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=126961718&loc=d3e4534-113899",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r36": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.7(a),(b))",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r360": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=126961718&loc=d3e4549-113899",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r361": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=126962052&loc=d3e4991-113900",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r362": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r363": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r364": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(3)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r365": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r366": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r367": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(ii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r368": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r369": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r37": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.7)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r370": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(01)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r371": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(02)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r372": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(03)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r373": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(04)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r374": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r375": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(ii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r376": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r377": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(01)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r378": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(02)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r379": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(03)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r38": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.8)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r380": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r381": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r382": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r383": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r384": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r385": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r386": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r387": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(ii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r388": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r389": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iv)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r39": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.9)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r390": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(v)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r391": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)(1)(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r392": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r393": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128097895&loc=SL121327923-165333",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r394": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(f)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128097895&loc=SL121327923-165333",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r395": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128097895&loc=SL121327923-165333",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r396": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 14.D.2.Q6)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=122041274&loc=d3e301413-122809",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r397": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "718",
   "URI": "https://asc.fasb.org/topic&trid=2228938",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r398": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=123427490&loc=SL37586934-109318",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r399": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=123427490&loc=d3e32247-109318",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r4": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(28))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r40": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "220",
   "URI": "https://asc.fasb.org/topic&trid=2134417",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r400": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=123427490&loc=d3e32280-109318",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r401": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=123427490&loc=d3e31917-109318",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r402": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=123427490&loc=d3e31931-109318",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r403": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32672-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r404": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32687-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r405": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32705-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r406": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32718-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r407": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=SL6600010-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r408": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=SL6600010-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r409": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(2)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=SL6600010-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r41": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3213-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r410": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=SL6600010-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r411": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32809-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r412": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32840-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r413": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r414": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r415": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r416": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r417": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32847-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r418": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32857-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r419": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r42": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3255-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r420": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r421": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r422": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)(2)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=126983759&loc=SL121830611-158277",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r423": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)(3)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=126983759&loc=SL121830611-158277",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r424": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 6.I.5.Q1)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r425": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 6.I.7)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r426": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.1)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r427": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.2)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r428": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.3)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r429": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.4)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r43": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3255-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r430": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 11.C)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330215-122817",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r431": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=123586238&loc=d3e38679-109324",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r432": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "270",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=6424409&loc=d3e44925-109338",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r433": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=6424122&loc=d3e41874-109331",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r434": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "740",
   "URI": "https://asc.fasb.org/topic&trid=2144680",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r435": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=116870748&loc=SL6758485-165988",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r436": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=116870748&loc=SL6758485-165988",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r437": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bb)",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=123419778&loc=d3e5710-111685",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r438": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=123419778&loc=d3e5710-111685",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r439": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(f)",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=126731327&loc=d3e90205-114008",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r44": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3291-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r440": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)(3)",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=126732423&loc=SL123482106-238011",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r441": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)(4)",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=126732423&loc=SL123482106-238011",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r442": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=126732423&loc=SL123482106-238011",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r443": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "820",
   "URI": "https://asc.fasb.org/extlink&oid=126976982&loc=d3e19207-110258",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r444": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "820",
   "URI": "https://asc.fasb.org/extlink&oid=126976982&loc=d3e19207-110258",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r445": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bbb)(1)",
   "Topic": "820",
   "URI": "https://asc.fasb.org/extlink&oid=126976982&loc=d3e19207-110258",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r446": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bbb)(2)",
   "Topic": "820",
   "URI": "https://asc.fasb.org/extlink&oid=126976982&loc=d3e19207-110258",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r447": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "https://asc.fasb.org/extlink&oid=126976982&loc=d3e19207-110258",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r448": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "https://asc.fasb.org/extlink&oid=126976982&loc=d3e19279-110258",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r449": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "https://asc.fasb.org/extlink&oid=126976982&loc=SL6742756-110258",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r45": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3521-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r450": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "825",
   "URI": "https://asc.fasb.org/extlink&oid=123596393&loc=d3e14064-108612",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r451": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "230",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=123444420&loc=d3e33268-110906",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r452": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=118261656&loc=d3e32136-110900",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r453": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r454": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r455": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(c)",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r456": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r457": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=6450520&loc=d3e32583-110901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r458": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=6450520&loc=d3e32618-110901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r459": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=123391704&loc=SL77918627-209977",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r46": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3536-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r460": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=123391704&loc=SL77918627-209977",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r461": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=123391704&loc=SL77918631-209977",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r462": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=123391704&loc=SL77918643-209977",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r463": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918686-209980",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r464": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(e)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918686-209980",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r465": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(1)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918686-209980",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r466": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(3)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918686-209980",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r467": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(4)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918686-209980",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r468": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918701-209980",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r469": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=124258985&loc=SL77919396-209981",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r47": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3602-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r470": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(a)(3)(iii)(03)",
   "Topic": "848",
   "URI": "https://asc.fasb.org/extlink&oid=125980421&loc=SL125981372-237846",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r471": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "852",
   "URI": "https://asc.fasb.org/extlink&oid=124437977&loc=d3e55792-112764",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r472": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "855",
   "URI": "https://asc.fasb.org/extlink&oid=6842918&loc=SL6314017-165662",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r473": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)(i)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r474": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)(ii)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r475": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(3)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r476": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(bb)(1)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r477": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(bb)(2)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r478": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(bb)(3)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r479": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(1)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r48": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3602-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r480": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(2)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r481": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(3)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r482": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(1)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r483": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r484": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(3)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r485": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r486": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=66007379&loc=d3e113888-111728",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r487": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=109249958&loc=SL34722452-111729",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r488": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(1)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=128311188&loc=d3e122625-111746",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r489": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(2)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=128311188&loc=d3e122625-111746",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r49": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3602-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r490": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(3)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=128311188&loc=d3e122625-111746",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r491": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(4)(i)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=128311188&loc=d3e122625-111746",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r492": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(1)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=128311188&loc=d3e122739-111746",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r493": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(2)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=128311188&loc=d3e122739-111746",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r494": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(3)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=128311188&loc=d3e122739-111746",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r495": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(4)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=128311188&loc=d3e122739-111746",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r496": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(5)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=128311188&loc=d3e122739-111746",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r497": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(6)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=128311188&loc=d3e122739-111746",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r498": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(7)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=128311188&loc=d3e122739-111746",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r499": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(b)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=128311188&loc=d3e122739-111746",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r5": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(29))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r50": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3044-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r500": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(e)(1)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=128311188&loc=d3e122739-111746",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r501": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(e)(2)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=128311188&loc=d3e122739-111746",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r502": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(e)(3)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=128311188&loc=d3e122739-111746",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r503": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "910",
   "URI": "https://asc.fasb.org/extlink&oid=126937589&loc=SL119991595-234733",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r504": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "310",
   "Subparagraph": "(b)",
   "Topic": "912",
   "URI": "https://asc.fasb.org/extlink&oid=126938201&loc=d3e55415-109406",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r505": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "330",
   "Topic": "912",
   "URI": "https://asc.fasb.org/extlink&oid=6471895&loc=d3e55923-109411",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r506": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 11.L)",
   "Topic": "924",
   "URI": "https://asc.fasb.org/extlink&oid=6472922&loc=d3e499488-122856",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r507": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "926",
   "URI": "https://asc.fasb.org/extlink&oid=120154696&loc=d3e54445-107959",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r508": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "340",
   "Topic": "928",
   "URI": "https://asc.fasb.org/extlink&oid=6473545&loc=d3e61844-108004",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r509": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "440",
   "Topic": "928",
   "URI": "https://asc.fasb.org/extlink&oid=6473578&loc=d3e63223-108013",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r51": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126999549&loc=d3e4297-108586",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r510": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(10)(1))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126897435&loc=d3e534808-122878",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r511": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(23))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r512": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(26))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r513": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(27))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r514": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "235",
   "Subparagraph": "(SX 210.9-05(b)(2))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=120399901&loc=d3e537907-122884",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r515": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "360",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=124429447&loc=SL124453093-239630",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r516": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(3))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r517": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(19))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r518": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(22))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r519": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(23))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r52": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126999549&loc=SL98516268-108586",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r520": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(9))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r521": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(d)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=124506351&loc=SL117782755-158439",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r522": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r523": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)(1)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r524": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)(2)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r525": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(g)(2)(i)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r526": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(g)(2)(ii)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r527": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(h)(2)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r528": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "825",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=123600520&loc=SL75241803-196195",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r529": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "210",
   "Topic": "946",
   "URI": "https://asc.fasb.org/extlink&oid=118262064&loc=SL116631418-115840",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r53": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "235",
   "URI": "https://asc.fasb.org/topic&trid=2122369",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r530": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "210",
   "Topic": "946",
   "URI": "https://asc.fasb.org/extlink&oid=118262064&loc=SL116631419-115840",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r531": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "310",
   "Subparagraph": "(SX 210.12-29(Footnote 4))",
   "Topic": "948",
   "URI": "https://asc.fasb.org/extlink&oid=120402547&loc=d3e617274-123014",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r532": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "310",
   "Topic": "954",
   "URI": "https://asc.fasb.org/extlink&oid=126942805&loc=d3e3115-115594",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r533": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "440",
   "Subparagraph": "(a)",
   "Topic": "954",
   "URI": "https://asc.fasb.org/extlink&oid=6491277&loc=d3e6429-115629",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r534": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "450",
   "Topic": "954",
   "URI": "https://asc.fasb.org/extlink&oid=6491354&loc=d3e6049-115624",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r535": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "360",
   "Subparagraph": "(d)",
   "Topic": "958",
   "URI": "https://asc.fasb.org/extlink&oid=126982197&loc=d3e99779-112916",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r536": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "360",
   "Topic": "958",
   "URI": "https://asc.fasb.org/extlink&oid=126982197&loc=d3e99893-112916",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r537": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column B))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r538": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column C))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r539": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column D))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r54": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6327-108592",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r540": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column E))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r541": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column F))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r542": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column G))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r543": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column H))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r544": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column I))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r545": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Footnote 2))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r546": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Footnote 4))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r547": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "310",
   "Subparagraph": "(c)",
   "Topic": "976",
   "URI": "https://asc.fasb.org/extlink&oid=6497875&loc=d3e22274-108663",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r548": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "310",
   "Subparagraph": "(b)",
   "Topic": "978",
   "URI": "https://asc.fasb.org/extlink&oid=126945304&loc=d3e27327-108691",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r549": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=124098289&loc=d3e6676-107765",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r55": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6351-108592",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r550": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=124098289&loc=d3e6676-107765",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r551": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=124098289&loc=d3e6676-107765",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r552": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(a)(1))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r553": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(a)(4))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r554": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3602-108585",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r555": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=126899994&loc=d3e18823-107790",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r556": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=126899994&loc=d3e18823-107790",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r557": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(m)(1)(ii)(A))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r558": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "52",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=128363288&loc=d3e4984-109258",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r559": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8906-108599",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r56": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6351-108592",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r560": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "31",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8924-108599",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r561": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=121590138&loc=SL82922954-210456",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r562": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=122137925&loc=d3e14258-109268",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r563": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "69B",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466577&loc=SL123495735-112612",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r564": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "69C",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466577&loc=SL123495737-112612",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r565": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496158-112644",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r566": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920602&loc=SL49130690-203046-203046",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r567": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920602&loc=SL49130690-203046-203046",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r568": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(ii)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r569": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(01)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r57": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6404-108592",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r570": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123450688&loc=d3e4179-114921",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r571": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "80",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=35742348&loc=SL14450788-114948",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r572": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r573": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(3)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r574": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "38",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=123410050&loc=d3e5504-128473",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r575": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "53",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=123414884&loc=SL77918982-209971",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r576": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "852",
   "URI": "https://asc.fasb.org/extlink&oid=84165509&loc=d3e56426-112766",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r577": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(b)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126561865&loc=SL117783719-158441",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r578": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "29F",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126561865&loc=SL117819544-158441",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r579": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r58": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6442-108592",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r580": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b-2",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r581": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b-23",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r582": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "d1-1",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r583": {
   "Name": "Form 10-K",
   "Number": "249",
   "Publisher": "SEC",
   "Section": "310",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r584": {
   "Name": "Form 20-F",
   "Number": "249",
   "Publisher": "SEC",
   "Section": "220",
   "Subsection": "f",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r585": {
   "Name": "Form 40-F",
   "Number": "249",
   "Publisher": "SEC",
   "Section": "240",
   "Subsection": "f",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r586": {
   "Name": "Forms 10-K, 10-Q, 20-F",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "13",
   "Subsection": "a-1",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r587": {
   "Name": "Regulation S-T",
   "Number": "232",
   "Publisher": "SEC",
   "Section": "405",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r588": {
   "Name": "Securities Act",
   "Number": "230",
   "Publisher": "SEC",
   "Section": "405",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r589": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(1))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r59": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6061-108592",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r590": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(17))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r591": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(8))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r592": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(9))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r593": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "210",
   "URI": "https://asc.fasb.org/topic&trid=2122208",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r594": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=124431353&loc=SL124442407-227067",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r595": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=124431353&loc=SL124442411-227067",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r596": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=124431353&loc=SL124452729-227067",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r597": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3602-108585",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r598": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3602-108585",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r599": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(f))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r6": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(1))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r60": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6132-108592",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r600": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(g)(1)(ii))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r601": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h)(1)(Note 1))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r602": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column B))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r603": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column C(1)))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r604": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column C(2)))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r605": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column D))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r606": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column E))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r607": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "23",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124436220&loc=d3e21914-107793",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r608": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124436220&loc=d3e21930-107793",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r609": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124436220&loc=d3e21711-107793",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r61": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6143-108592",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r610": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=124432515&loc=d3e3550-109257",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r611": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6351-108592",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r612": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=124259787&loc=d3e4647-111522",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r613": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "320",
   "URI": "https://asc.fasb.org/topic&trid=2196928",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r614": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "321",
   "URI": "https://asc.fasb.org/extlink&oid=126980263&loc=SL75117539-209714",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r615": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "321",
   "URI": "https://asc.fasb.org/extlink&oid=126980263&loc=SL75117539-209714",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r616": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "321",
   "URI": "https://asc.fasb.org/extlink&oid=126980263&loc=SL75117539-209714",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r617": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "323",
   "URI": "https://asc.fasb.org/extlink&oid=114001798&loc=d3e33918-111571",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r618": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=124258926&loc=SL82898722-210454",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r619": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(b)",
   "Topic": "340",
   "URI": "https://asc.fasb.org/extlink&oid=126905575&loc=SL49131251-203054",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r62": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "275",
   "URI": "https://asc.fasb.org/topic&trid=2134479",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r620": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(a)",
   "Topic": "340",
   "URI": "https://asc.fasb.org/extlink&oid=126905575&loc=SL49131252-203054",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r621": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r622": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r623": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r624": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r625": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=126905981&loc=d3e2443-110228",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r626": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=109226691&loc=d3e2941-110230",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r627": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(c)",
   "Topic": "410",
   "URI": "https://asc.fasb.org/extlink&oid=6393242&loc=d3e13237-110859",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r628": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "420",
   "URI": "https://asc.fasb.org/extlink&oid=109237686&loc=d3e17752-110868",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r629": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=121557415&loc=d3e14435-108349",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r63": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9038-108599",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r630": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=121557415&loc=d3e14557-108349",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r631": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "450",
   "URI": "https://asc.fasb.org/topic&trid=2127136",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r632": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(i))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442526-122756",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r633": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(ii))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442526-122756",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r634": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442526-122756",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r635": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(iv))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442526-122756",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r636": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iv))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442552-122756",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r637": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495323-112611",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r638": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(1)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130556-203045",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r639": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130545-203045",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r64": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "a",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9038-108599",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r640": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "705",
   "URI": "https://asc.fasb.org/topic&trid=2122478",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r641": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(ii)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r642": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(n)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r643": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r644": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r645": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(3)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r646": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r647": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(ii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r648": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r649": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r65": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9038-108599",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r650": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(01)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r651": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(02)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r652": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(03)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r653": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(04)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r654": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r655": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(ii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r656": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r657": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(01)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r658": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(02)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r659": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(03)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r66": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=123577603&loc=d3e5144-111524",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r660": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r661": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r662": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r663": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r664": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r665": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(ii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r666": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r667": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iv)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r668": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(v)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r669": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r67": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 4.E)",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=122038336&loc=d3e74512-122707",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r670": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(l)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r671": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32687-109319",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r672": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r673": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32621-109319",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r674": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r675": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r676": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.7)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r677": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.4)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r678": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)(3)",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=126732423&loc=SL123482106-238011",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r679": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bbb)(2)",
   "Topic": "820",
   "URI": "https://asc.fasb.org/extlink&oid=126976982&loc=d3e19207-110258",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r68": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "https://asc.fasb.org/extlink&oid=124260329&loc=d3e26853-111562",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r680": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "825",
   "URI": "https://asc.fasb.org/extlink&oid=123596393&loc=d3e14064-108612",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r681": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r682": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=6450520&loc=d3e32583-110901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r683": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918701-209980",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r684": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=124258985&loc=SL77919396-209981",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r685": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(3)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=124258985&loc=SL77919359-209981",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r686": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "850",
   "URI": "https://asc.fasb.org/extlink&oid=6457730&loc=d3e39549-107864",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r687": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "850",
   "URI": "https://asc.fasb.org/extlink&oid=6457730&loc=d3e39549-107864",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r688": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "850",
   "URI": "https://asc.fasb.org/extlink&oid=6457730&loc=d3e39599-107864",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r689": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "850",
   "URI": "https://asc.fasb.org/extlink&oid=6457730&loc=d3e39603-107864",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r69": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "320",
   "URI": "https://asc.fasb.org/extlink&oid=126970911&loc=d3e27161-111563",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r690": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "852",
   "URI": "https://asc.fasb.org/extlink&oid=124433192&loc=SL2890621-112765",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r691": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "852",
   "URI": "https://asc.fasb.org/extlink&oid=124433192&loc=SL2890621-112765",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r692": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(1)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r693": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(2)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r694": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(3)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r695": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(1)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r696": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r697": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(3)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r698": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "730",
   "Topic": "912",
   "URI": "https://asc.fasb.org/extlink&oid=6472174&loc=d3e58812-109433",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r699": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Subparagraph": "(b)",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126980459&loc=d3e62557-112803",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r7": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(3))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r70": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "320",
   "URI": "https://asc.fasb.org/topic&trid=2196928",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r700": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(c)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126561865&loc=SL117783719-158441",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r701": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(e)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=124508989&loc=d3e19393-158473",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r702": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "825",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=123600520&loc=SL75241803-196195",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r703": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(a)",
   "Publisher": "SEC",
   "Section": "1402",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r704": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(b)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(1)",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r705": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(b)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(2)",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r706": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(b)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(3)",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r707": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(c)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(2)(i)",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r708": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(c)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(2)(ii)",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r709": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(c)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(2)(iii)",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r71": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.BB)",
   "Topic": "330",
   "URI": "https://asc.fasb.org/extlink&oid=27011343&loc=d3e100047-122729",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r72": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=6388964&loc=d3e16212-109274",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r73": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r74": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "((a)(1),(b))",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r75": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r76": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r77": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r78": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r79": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r8": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r80": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "440",
   "URI": "https://asc.fasb.org/topic&trid=2144648",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r81": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Topic": "460",
   "URI": "https://asc.fasb.org/extlink&oid=126907644&loc=d3e11281-110244",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r82": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "460",
   "URI": "https://asc.fasb.org/extlink&oid=124440162&loc=d3e12021-110248",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r83": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "460",
   "URI": "https://asc.fasb.org/extlink&oid=124440162&loc=d3e12053-110248",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r84": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "460",
   "URI": "https://asc.fasb.org/extlink&oid=126907703&loc=d3e12524-110249",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r85": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "((c)(2))",
   "Topic": "460",
   "URI": "https://asc.fasb.org/extlink&oid=126907703&loc=d3e12565-110249",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r86": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "((c)(3))",
   "Topic": "460",
   "URI": "https://asc.fasb.org/extlink&oid=126907703&loc=d3e12565-110249",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r87": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "460",
   "URI": "https://asc.fasb.org/extlink&oid=126907703&loc=d3e12565-110249",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r88": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)",
   "Topic": "460",
   "URI": "https://asc.fasb.org/extlink&oid=126907703&loc=d3e12565-110249",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r89": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(5)",
   "Topic": "460",
   "URI": "https://asc.fasb.org/extlink&oid=126907703&loc=d3e12565-110249",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r9": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(31))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r90": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "460",
   "URI": "https://asc.fasb.org/extlink&oid=126907703&loc=d3e12565-110249",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r91": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=99376301&loc=SL5988623-112600",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r92": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=d3e21463-112644",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r93": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.3-04)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=120397183&loc=d3e187085-122770",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r94": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=6405813&loc=d3e23239-112655",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r95": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "505",
   "URI": "https://asc.fasb.org/topic&trid=2208762",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r96": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "710",
   "URI": "https://asc.fasb.org/topic&trid=2127225",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r97": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "712",
   "URI": "https://asc.fasb.org/topic&trid=2197446",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r98": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "715",
   "URI": "https://asc.fasb.org/topic&trid=2235017",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r99": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5047-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  }
 },
 "version": "2.2"
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>ZIP
<SEQUENCE>93
<FILENAME>0001406666-23-000026-xbrl.zip
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 0001406666-23-000026-xbrl.zip
M4$L#!!0    ( "6 55:#N<6QL]P" $LQ'0 1    8V%L>"TR,#(R,3(S,2YH
M=&WLO6ESVTBR-OK]_ I>S7O.Z8DPY=H7=X_?4&L;]9B46Y+MD6[<<-0J028)
M#4!J^_4W"R2UVY;=E$A0]$S;) $4@,K,)Y^LRLKZ[?^>=SN-TU"46=[[QQ)>
M1DN-__OVM_^GV?SW[SOO&FNY&W1#K]]8+8+I!]\XR_I'C4\^E%\:L<B[C4]Y
M\24[-<UF=<UJ?G)19(='_09!A-XY6+P1W 6KL&UBBG"3>42;AEK>-%@;&EGZ
MV[XZ?*.]CM$8TT2>Z28SE#95=*P9O-;,8!$I<J_\&^R]T5P%*T1DQE)EC&).
M8TD1"R[0=-NC/KP=O&&O?).=]YME</]8.NKW3]Z\?GUV=K8,WY</\]/76:^3
M]4)ZX]?]PO3*F!==TX<>>4T0YDVDFA0OC=LI<T:PO-7.N2TZRWEQ"*<C^GIT
MQO@":/K+-\Y.AZTIP^CT6V>>T>H\K+5^?9[>9>GZ91YN\EMO0E 3D28FXT:<
MZ9S?:@5^R,Z77=Y-)Q-,KE^Z+*[O%TUIJWO!C]6)XY/.[[WIK>=/1\>G^I!=
MG5@]^U@2<.!6FRX?]/K%Q<,GCP[>?@@XP=]I?-37XO7PX'4G?DTLF-[HR*N6
MR^RAEX.&\>M_M][MNJ/0-<VL5_9-SXW%^690-@^-.;G?>Z,#]QX^^Y9FW6S\
M3<?T#O^Q%'K-#[M+H.K!^+>_=4/?--+US?"?07;ZCZ75O-<' V[N79S 96[X
M[1]+_7#>?UUIU.NW__5?__5;/^MWPMND$<VQ['][/?SQM]?#IFWN+][^YK/3
M1MF_Z(1_+/FL/.F8BS>]O!?@ ;+S-^G$4 P_9MZ'7O41CK<!18K,#>]_WM\)
M\1]+&0V"6T$"TD(Q+J0*1 ?-.444<QO-Y[7T* @#5ESK8\]TTZU#]F:]!\]W
ML0JO4YC.5L^'\W^%BZ5&YJ%I3S]>V+7\]!W9.=VGK8$_7C\]V-3'V\<;7PXV
MUWE[[ZBS?[Q/#HYWCO:/6VS_TSIK;[9X:\]=MM9V.OODP^4[VN[L7^;G!YL[
M1]M[']C!IRW2[NZC_4];E]N;&T?;:SO'VWOKM'6Y@@X^M3LMK- [<G"Q_\F)
M_;V-HX.]#V>MO3\OM]<^T/;:"GSN9*WC%=R^/(!VCSK;>W_R@^Z'4[^YD=G-
M#Z)]^<>7_<LOO$5VOAQ\VN?MM3;<X_"L]6FGVS[^DQQL?J"MXX_=UMZ7T34?
MX5Z\=["7TU8W/<N72WC6SL'Q%]0BZVQ[;06>?9^TUPZ^'.RYB_:G_?/MC^KB
MW=YZO[6+SM_MM0BTQ3YSCRTU5C2CD:'),))-HRAK$BZ(TT8PA^326P1ZSI"
M/[^]OB74IY3Q"C@?GQS01L<<+F3[/=GB>[)%EGA.P8/*X&R3,>*;ECK9%,(C
M9(*DF*FEM]%TRO",8AW3BHVL!,C9#Z;8@%_*A8"_)V!R3\".:.>1\4T9%0+C
MU;9IP6J;E&F0!7'4&[OT-@EA:O)]#^WG?B'A1TF8WI.PU,H%(F)32P'PK -\
M$IXUJ498>THXCWKI[<;^C\A7886)M$"4<6#26^.%Y4@3Q;P3(M!OR#=QA#?O
MB]P/7/^3*8!D]B^&$IZN<%DKTUW7W>AM'_]QU#[>R0ZZ+1# Q^[^WI_G+?)'
M:N>RO?GG1?OX$.ZW\:5%VIUW=*<3_KES<?#)GUC"1*N[3MJ;?W3W+_\X.OAT
M<-1>6[_<[Z9G;J&#M2T" H=G^/-RGWR,[<LON/WG9TZ"0%Z@)H@)@AH=3=-
M3-(TAFN.+9/8N*6W[_$/R><OV-]"/C?DL_WG9Z]$M-(Y".&H;#(DP0."036%
M(PKX#M<J,) /_2'Y,*4@$@W!2 HF@Z$19Q6$#<()'KS%WY#/B/<G$9V$ F0#
M-+Z_TO/KP-=/$FA^*$,<=-YE,;PP@0'ZLM;:UF=0>\P!FIH:>]YD//JFTB@"
M'[5:226YE^:')8:5,R!RY[E&C'MG*<58,A,I]\)+]GGK:X+:!C%!"-T[?!<@
M3'^7&9MU4N Q* J0UF[?]$,2VW;<R'H0G&7@\/(R2S'W^CD$6V5F.W!5V9^N
M-'EK=RS-?=K>W.>MRW5TL.>[VVM_GK4WU]G!\>%9^[*%6I='W=3._MY!]ZXT
MV\<.@?^Z;.WM=-IDGX'?1/M[1]#&"MP+?.GF 3QS^ZC=/8BMO14.SW;>VMN'
M\[?8]LIG1"3X&>&; H,5,L7 DP47FU8+JRU17@NT]/9;@?+?5IPK!L&/I9"%
M<B2''T)7%XT*F$<>#;.2*"MM1)PPJ1 EVE>Z@!>Z\)2ZP%$T-%C>Q#3!,C&H
M:9BP32,="@Y'\'GD.73AI>/">6MMY?2@!^A\F3.0&]W>_!.U]CYF("L$\H/S
M?;=-VL<)Z0&Y+_;)%M[>U=#F'^7!WLG1_J>#;+_[,6M?@E?8<ZC5_7"VO>:
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
MMKJ8D&">4(THI8XIXP'1@ 0P[P(V1M0A67>&Q30Y:TH1*<48;$<3IKPP-M@
M$8T+$1,ES7Q84ROOA8N6*;Z$_L:@Y^MB0T@;[!177'/##$4&.!L/ D&L"1Q:
MA/FPH6<5S@07D 3!#,1[("',M'7&$).JP>M4'1Y8PWQ8SFI>G.0%!(&U=$*<
M B<P$/,HHQEQ4IL()%L2Z:4)G-CY,*!IR&AR=F0"#M&+H+$-C#K@")$$EPKC
M$1^ T,V^'5WM-+0%O5 ,TM4SP1(FN/L#_%%$,<:-8=%J[5#P7!'+A?$$B=FW
MHUF5T>3LR*6J98)A2Q#0;,,L0\ 9I'>6\4!X#5):ORNC>@XF<+ 713GA$B$&
M5F*904+YM.V>=TKK.3">>HXD*((L(C'ZH"G3 &LR6)3V-A!1.!EJD*KZ0ZBV
M<AC@W%#6T@-IEI+U03X*.\8 Y610'$O*'"$J*C8'1C1E64UPG;:7%LS*!0&,
MSHIHD+6<"*.E!D+NT1S85;W#(F2XX$Y90JUC/HTR1*(E * -$,"2&HPKS*2
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
M)EJL@^1UVD:I!B*>"E!K"Y3*L("\(0PB(Q6#5 8'+[!72-6I'M'T4TRG \3
MH;0!M@R"PXQ0H8SQDC#%F$];7=1I*&,&1#B=BBV,6&(5!#K.,X:-9<";0)J!
M!4&THS4"VAD0X708+['!2<T<IHY9(XVSE$$8*SCBRD7WLJSPT?>:L6R:Z4.!
M=-(+(@)Q1C"*F(HQ[7PGD.?P:WAA4# 7>C05/(H:*$!$1$3AF=1&&^F5X]BD
MW!\5V)P1NV>IWS\5>B=D0 0<"/-*,A>C,C$0P;55'EP+5W/F6)Y%D%-!=H,4
MQS3MK$53QG8:/\&>*_B+$!U=G;;#F1E!3F='#:PTCSK-'P-!QVE;(Q-\""!9
M&<!<YV-%SU/)[TF6U @K)>)!.\Y$BJ6,< A^XDP)'PF3\R&2F@@#.T&E1D9Q
MI9DP6@MG,-&:2)"*06+VA?&UO9)JM,C,$LXB$HIZ+UE0PD0LL&4<86K3X-!P
M4<<L"^%JL':X0U6JNY3WX&MYVT)6G!MT!QTXU[=#_T.O"$#W+X/?ZIV&LMH#
M==-DO7=Y^;3%(='$)*=%VJO)"D5X9")M?.Z1, KL2:IHO9U'R:4:6F5G."3O
MCP=#N=5$7N#V.3!R D#GF.-2:>NB9U0%8HC$=4KJK8')39_'1\$,-1)C(UU:
M+F<\!73U$J?5%M;6:1G-S!KJ]*4<HI1.<P$\14*TIM.D&)/6$<)U"!Y7*#QG
MPIVF_\03PV,C3+4MN.4Z,NF5XHP#Y[%:<*6,<_,HN>?WGY.3%R9<<F\0H8*R
M*)S%7F$?1=#$1V[JE,Y9 Y.;_H F!2M4Q#M*D6 >*Z50&JM6+%@4Z6A/W7F5
M]S3\YW2R$FB,FEE"#7$L: Q4.%4:C232($"DLS\(4 -C?I*1 Z<MYY$['()E
MV*6*5<I+ &>#K3%,SZ/DGM]_3E!>7@L7&+7>!L:H!LL3 ;/H'7?"2C[[\AHF
MY^V9\Y5!_R@OX-%N"VH-CI;]S*WF@UZ_N*B)7"18C_:4$_B/!<\5-PAYRXA#
MWC&CZB^7RLY6>CYE4W;^&!19Z3-7HUF#:)$1.#J(W#T3V)C E>$R(*:IU:0&
M/NIK$AHNU4UY#WG1RTPEJ)H(!05NO2,0M2'$'%:6"$.L!^%X@9%"-1?*=O\H
M%'621P"K\#$ZS13( T7+% 1K$>01I&>R#M7J4E'X*TZP&?+#PIP<96Y<,]X-
MW<J;#[OS1<&E)A;+5')6,T T84T0(#T7'8TNR#H,3$]?<E.JZ:,\59X@Y01C
M45F//0 B<\0S%7$=UB]/7W)3R0VA-&VI053P.H+DN,'!,!^DXAY)1.LPN/$=
MR54[; R*_&0N5[4%Q0SFD1&&/0O@Z32W6".<*B'BX'C],?/9Y#<=Y-0AQ"""
MD#XP@HQ5,3 N$G(B%@VN/W(^F_RF@I_<.4!0&ZGUBFF5IE==]$!B#"%>HUA_
M_!QF$W6A2YPIU\\_[,XCC'+P?X"7S''N& G,,*PCEA(QR@/RMOXP^MQBG,ZZ
M-*ZYLTK$B$%RPE@3 5@M!.(@L.#F $V?6XQ3 =4TAD*LES%M02 T-A!60#!(
MC)9*1NOG!%1;F?>=L&[*?EK!'9-(YQ%;L0)68ZW4"'GF25HGBH)G-J!DH&H.
M*.J4I#F=;+*(/"$<Q!@HTSYJZIS!#E/A= QD7B#V^:4YG;*]5CF(-GS 'C-G
M#!AD0)1%'R4ATM9AU=TCPH^5,C/OC8,;N'D$6$8M5A WI@K:+.V&P-)2;AZU
M=MAH4X>""C,EQ*G@J@C">$T8,%8&?ZQ.NQ=H)RF0H.C1' RA/J\0IP*G1E+
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
M7>SE9XO0Y9FU^>QS-)H#V3)-8BAO,N54TR =FMY%08RPSB)@6[N@>W_DY;W
MY]73SXR,=*3B/MO%>XARLYY;!,$SIDFMO74@[@0[!YS=,P'H:!UNVJAC,X8(
M$G=:!D2'X\##W6WJ!H>_C%0Q#0&_+T +LQ/3::R?!S?H9Z>AL1V!H(7RSKCO
M9(G5@B0]%C#>YX (G8/L9#AFMD"#[Z+!UC?1H$6@?S8_?MD_7C]K[WTX:Z\=
MP?T/>97ATOW8:7_ZF+7VML[VNW\DEF2"X])KU?2<N";3T4$4CW%328XYPU)Y
MS)?>:H[IX^=S9T2#?P&E:B2M>LC2'PQV=*WL^'%#:M>38/_S-T6P_+5L]$,G
MG!SEO=#H5:-?KQH DIU!>N&&*8*!#O&A\<M39OHF^X<[+6S^,3:/OL< 6I>'
M%P=KOT._^$[KLG/43N_P:>M\__+CEX.U/^GVVI_01P=?VGL?8WMO_[/6FJ7-
MCYI.!F  &M.F\=8U3332!Z &Q@ #8$C=-?F_C\9RGDXSJKT.WR?E7(S,3D,[
MCE<^(Q\5<@@UB;040@T;FA93#R212A' .9BTQ)-CUJ2 7'_9*SQ4#V#V8'07
MV&.1]3-HL*@0-13!-TX&13E(^07]O %GI$&_H85@\HO]>R*@*0]PQ?7??-T%
M_< \>RT& V=MJ';X; !KH]'V-X.>#T4Z:^GM7M;O5*DBP;BCANN8LIRO<>IO
MOGQA*I=?7G1MWGDY[SU.#ZID'L[=D>D=P@^]QME1!K]<F_>3SE!UJXK]TYDY
M?D+_/<+)"TQL95P+__T]_TWO)3D(0A7TK&T*P3 X8*6:RH _-AIQI$-0/I)A
M#C0H[6X_=U]>-?X/6D:$-TY,T3@UG<&$4Q^>4X4?-ZGXA"H\PL7="A87^OL(
M_5V_DZ3CF;8(XHEH FLRYGG3AC1JC:VH]DIB$0CDZLJ[?]=72V<&:-='#FR8
MU7QWM#VYM\5 ^Z,5^4Z*B_%<6298TS)#FBQZUM1*T6;4H,:(:T68!AX%%#^I
MRWY>?!G"<6,LE,?DO-SA_V*&^?^CQL>>DPI.*G8KA[%; \*VPX?#MJ?HD^=!
MIH?[I)WWPI.^W#0%_LM57%>%= _DX'QU/<R-G'^VR/F?PEJDK)=RJ-X05M60
M?':W7:TCV>KYE,(5&O:BX8X" 'HJ$=K(AKA07"\KR<J&:9R%3J?YI9>?P6,&
M4X)A>3A0#M+ NBD;/L2L-UQULC, Q6&(CQ'F!C !V"S?7Y>Y'\HW#ZW3?&2?
M? (!)"&4?ZDW\JG75OCZ@M5G7KC_/$O5/H%"_2OIT^Y(G;8J;:HE@_OI-6NH
M=;G^.3B+ ]6D*8Q!349" "H633,HY#%TL>!")%_V-9XU!8V=OKV>_]!J[KKA
M;2_OPR__&62)PP%UBVG]=U&5MRB_,1Y/4Y+U[9^J(@377&\!OPOXK>#W8]X9
M]/JFJ!;[%^7+@EW<OMQ/*X41YB(T<0P2XE[NFHH3WPS Z;PU6'.'%K [K[![
M=A2J=2MWL/<7/)K]/P)2FU#7-TRG<P6]-S'9AM$)T/ #,'P+>6]PX/&H24+C
M=#B5?VEX.-H[K$X]*8(+U905)HVJ ES9^ 7:B_!?.7!'C?(H3RNZQ]56^D>F
M?_<MSDQYWWU4%X]>Y.] VGN^\0NY\;8V!)#-P![#NU3#!>E\N#(]RJBQ5&ZI
MK)ZD>E)3]AL:-;RY*!_P*R\ 1$>U_(9UI])H>M_T!R\,2WFBL-H&Q:%+FSKR
MT&0TAJ9R3#=U"%2)0 P->.DM,(T%F#X$IC-$>MKY]/LEGW,GD] 6@+:;]?N
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
M09'>YNO*N)#7'7FQKPAJ@5[/BUXK"_B:NCGHI;<[6?FEL6'2&/T"PFHB,[V
ML)F L-\7$#9M<R!DZ>V'7A'*O).2NG;[)L9J[CV--B_PK!X") M.-F5 :Y %
ME$W=$OC2V_=%?I(Z,2RPJR826V#7U+&++K!KZI:@EMZ^"X>FTP $<Z&JX;N
ML)H(;@%A4X<PMH"P:5L"Q4MO6]!F8]?$T+]HK&5E2K\>% LN5A?QS1&0U7A.
M>#$I/!T?PA<^9.H@),&'#!<#I6S !U;6C)8%K?]GD/4O7L$9G2K];_<Z.;#1
M2A4F4HY@SS>&VU,VW@\*=V3*86;]\-H;NSLMW%,]-(/PN7%/=<5(L<#(:5L"
M0TMO_]^= /<^#?[_6V!7/21&Q *[IHQ=<H%=4[<$FOC=O6)?::A@4);9J$+8
MRHU:)!M7Q7)6\YX?%HY+YP  #CK#:CW;)V'X- LB5Q,56(#AM,%PF( C%SF$
M4[<'KI;>_IFJ'F7]:AE7A6[P0V?\_<8X:F/%YH-^8Q0AI\S#!>+50\*4+!!O
MRO1/+;!NVI8@\-+;:T*W>UV6+F'>[N#DI%-]-\5%M7WN MSJ(5(Z/]-&=04W
MO0"W:5L")G+I[6I512S5I:XP#;B;.2S"".6JVN8KPUK1IBHUVQM_334.T@77
MZ'A-^Q8P6 /A4[3TEB_6E<Q$6*L78>UL&,1J7A7E'_*[*K'1+]*!:B2_!:#-
M"* M%LK-@$'0I;?;52G*K=ZPHB&TLH"RFDAN 64S F6K"RB;OD&(I;?7\65*
MLS-%541V(R_@-JD$=I&5/AOM(E'5 GY?A--4I6^K5YZ,MI=8@%]-9"W0W(!?
MG?.Z%XG=TQD<Q6CA<Z:.0XPDGS,L9E^^:JQ?E;K?'F\1E 8)5L<571N;:6N@
M-!BZ&/^LBWCGR,W4%NH610UGP!;XTMMK?%N]L7O: LIJ(KX%E$T?RA8E=6;
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
MW1<!7Q %O?SO%U^?/?IRA@@0O2M#$'+QT3(WL)!EIO-#UH<VC+/376R!2\O
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
MXP[N="?;Y?$FY:6WD>Z=]<]#'\=&=I!' "4(Z;B=MW6W- W&A=TTZ=I+Z'D
M6M:=6W39:P5]9>=&\^8;R(VW.R.!;7 3_<A>->E:%2GFCLCHC--CK*+IKM!/
MMKF 'R\*$!0QU81MI%YH@868B=$JDL3$9M[5 )6KB( \E9#)]HB"+1,0\?9J
M3UPA+Y30!K:!>]KI?G7I@A9MK>:.3')W>>R1?X&)BH7&V0-Q8)>8'K,/EL2
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
M>6.'Q!_3>%M.[HGC4;2UY"1I59YZK U<91^Q+^A'E1I,""!!I76*=J:*^:?
M$%,%JI;3'%LO5J4JM2DQ/%F)@C-!1J;;7+62)!#G! @"J6>1 E_R=.8XI (O
M"G,4H@I!(4IVNOHYY3FTEBNOS[&,/,9@16Q:D2E-$/0D9^8-?JDPFEAE5T89
M^9T)[8!0%<7.F6PM,!3VQ$JAXH'LB#F.WN _+IL=B$T9([-N+U#.#"=6MEB7
MJ1A?FS?0J)A7'=W2[J#[&\Y(R26PHN43'@1CQ+)5D#:;E1,XV#=GVI[=YG\$
M2;/0VY+LPD-!6#5%Q\0_WM8"CZ49U)R*'E9J]23P%I=HHQ1H$%:-EEB5S$9F
M\:WKH[((E'1Q>CZ<)RG7B)N'$ O5NG1FO%UC2M<!;C:69LV%0LF0IR1>SMB1
M.&Q0O?ET6VZ_R=$PO<J.2=O=R+ZG[\O2-$CSP%T&LM)^<9FXSVVFN])[K;Q[
M)3M.EN>J!VB0:PYH.)M/!W@9XD("!0H+L$T76NQVHWS//4-,T@N0I=N4:-M[
M*_%A=[QBEKL% YA.*.O(.BC[=[.8=^! X1G_Y9:K4$8-/OU\&%)Y].<[6RE
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
M]TEE1XJST%N$C-:>0L(AU;SUG4-I1L$Y,I2\[U#..\$*4H(E:1T3HQU2/3)
M5#MRCN\7<DWR:Z<02Z%)HF:-F&5J.?NQ.?NF>6(ADTIJB8;]T!"7NI3^6KUB
MQ2$H,W( QCVW0]^((VJ1FSR+P?6;5OL*,W*/-JOFO+MEMW1^@0W"RI2<34H?
M QGD#9[D-SI5S7.;_(DBKI1"(=(D@=M>-9&*BD%:N$AMBPG;H$U=H\TO_K,0
M]1HLY5@FLZ99IR\V6DH81)RJVMD :PNB.HMZ.KO34B_E<B1_-',X@[71T.,.
MVT3Z^+(%;*G-IDW 3NOEJB0/NPK:3=N/>#F7)>]=CY?M'"<!G#9=3J?[Z8I[
M9)L)$IP;4%''//CT=B$HF$+US0_->FF?^6'S!F&.F8D=%G9B)JCZT=_NP$G5
MQD#IUK+/G&AA4:7@H6_9O3L5RU;-98I*6YLF5HY0G))@G8R29QM08^S38.F
MUE<!$N3&.#=0*1HBRJSP@\(XF*SGX#,K/;M2T2LQM)T=.$LU8[CD KO$O\$C
M@1G)>RWP$E,#QJ8XFE(0*G8Z- .25[L#PV3RH\$SY8A7VJ=J=-BW%N)6")6=
M\8A0.5E1>E_+4]ZST$CK[<GG(6FYN-0C219GS5)'[B)#4+P3C&OK*AM;7=H=
M-.E?EO=,E!?=_0K=6,#S-!-0G2A9U0;%:!=004:DRM*TU8S]2M47S(8,R<V<
MUD)1B745BU3\L5/ 1HDX;*6+4BXM1D5)'X!Q"V8<&A@+UA8HU!]KU89OK41V
M^]D?(M MB^/XG3_F^AAEMXS?]!*72+!GC'<.0+:.FZ$0YA+-,1QZ:-<L5<7
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
MMTYCF*?T$%'FW]BK(P8+)))<V#^<KJ^/LHC&O+*DK:@Y0_CC);^++L2>O^<
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
M.%@YN6$@EKA[&?MSFWJ%5&?N/R_M#],>50\%O[,)Y7!\PC+F^C0M6%3(W$Z
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
M,=@C9SI#6^U7CA50^*E'_%"[/9F#^LC-T0_(F;LMU:"0"1T"!!5(/G!7[YJ
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
M>]?Y@,TJ1]6W%U?.<#WEV0RV8 66#O0=S=V=,U61;-*D![O]<-#N<[3E?A8
M?W7#A;A*%5YWULKJM);@QRW!N_V]L+/7W1X)OH]+Z\>=BB=^,+;K;+0&@[#;
MZ=SQV=@P!6^>T;[^&=\GUANWO^W!YFWM RS#%CL5OU B8WNRI1X5MX$N#B^#
MGT#7['1UAISJ/]N#GT--K($Q'995;O/&=5H8LV"4HV$*))IQ*22-"@=N+9A;
M83'V*.,$VW@N#!)<M84].!C:J>)D,<4F+:6J"EV$YH*TJ95+H=17X1:2FO#E
M%C#85DDA;[O+[H&,C<3[K6$J5W8Q0-P(-N# EFI1SG5[,8%."$+*XZ;=<8C6
M*)T\5"=1RJS9A!+S$LB:P\LC-2D0GHM4?9.Q(%/:UR(1-EKV"DU-(T6#>7)F
M8?]>!PM;ALZ@O/F*SUE8'OQHK_5SB=K;I*$'G9_EWRTN%F091>@V[!(A<0E(
M(.3YW/0PRJDDGJ%8&CDC4+_JGANO0%SB*#@AWE@4)FH*$_HLB%YK*6&L&=EN
MN\(% 1,Y0< 6(<\#Q%8N)L@HJBSK&JT)0@\0[R?H8JY'GM>LTEY=XZ"N:ZSK
M&C=0.^I#B]>HD,E09<L"R?+DMC'H/EUT(9T/S#TEN$_11O\$_1!G4]!RQ)N@
MRZ,L;\P4V?7F'F *[^<@@L_C"1#UB:1VC45!?3915PF9@/OFK;N,WF<. P>#
MOQ2731&JD>",K>;/&N1I[!6TB_ FX3_A!CE6"B%T*FBU-JQCKS0U]DA<7AFJ
M MK"5V[+E8?N=ZSYREWT^QM3&>#@X)=:JZ[N'VMW-%;S*)E0)0.B616N@[8:
MW=W%(5Q2MMX2R&T;:NTM%0I]L"S6_(-#&NV:6*_-Q;)=S=%=(]R>/&:J1KAM
MTV[5"+=' ;VJ$6XUPNT)8;5JA-M30[C=% UDEKK:V.RL,#8?% K'$9/-!<1M
M]SK_O/8Z;YU5\Q@@=&\=O[+&T3TM%%*WTPN[=YZ.WR2812W!CUN".[W=L#?8
M(B3H=N/HZE.Q%:>B/P@'W=;V'(H:/7<#]%R[1L]M-WKN)O[$F/ZW??[$U$^Z
MW>385DQY.TYFK[EST[-9O;WWJEFW3Z)6'_7'*4;MG=ZFB=&/L5H?DVC>8)[K
M1 XWY!D;>J->AT=_6*(B-\)6@I_W!SL#P\\VSX*?NIV>Q:.[,'0&,OT$_N[.
M;L7O6SN!>_&:IMX$6,>+Z>?EAZ&B^=E_!O/S6U"[WP5@'+0[3>$'GF4)]==!
M0KPH29>@[I:%G!@,LQ-I%\ ,Z,Q@CK"GHW^_>]UH[35FV/I]FHP:24H(O] G
MH8:MSQ<SIC]GLDP+6,/FQFHN#8I6C%T&YU!CN_V+W*Y"@6W42^UJWE*+1V$&
M]9"$FN^;^55-U\^3239$3M?JX2]CJ5-J6@#R)/CL#I-9NB]2ZPZ7GXY5!:%0
MW3)8VJ'3]I;%-$A_>!K1&X*]CDQ+X@-A?=TVN-JQP<(?&BS\3>;R< KMN +%
M;[AWI24#D7^7N\*KZ6R272HE=0!$8$^]]4RK$K>%.9-.GS&_O3D \PPN!MV
M[TQ-&H3;5[8K+FNQ:]!T584(9@HUF.[)P[-J,-TV[58-IGL4**\:3%>#Z9X0
MJ]2FX.FV<>&V&5*W=>M=D\;5I'&/"/%6X;[>']/.T\)(;!=,HM7OAKWNWN;E
MTS<"ZU.+\C:)<KL7[C6W2Y2W&PI7'X\M.A[=0;C;;6[5Z:@Q<3=  6^@XMM0
M-,(C\#BN0+NTVCOMWF:KX \J'TD_T[R:O?IQPYO:-U7#=P-NVM#C>'M0SJ,4
MCM9-%?FC%HX'0=UM$1JM1K1M(@#$1[AU!Y5XM7909E1=)DW5#R(<AL62F!=A
M@]-.QWF\1H+0=Y$?4A-G"=SC5$4Q<9[1T 6HQK]*B!L+24EQ7/#\B+%FC#'Q
MW]G;Z5O&V&*>C;XVN.&W^U7Y9,<,;L5J47M;VZ3UX7%8US:)9U :@F@J%]F?
M)^'17%2>ILP,!&,3!L/%G-L\,_TF[+] B @\B)2U,S:9HA/E6$TA_@[)9^?8
M8)Z(_4;1C-!7WQ3RG6%'VPMD>&OU7\)3J(/R)7Y,I03&0;9:0R$(7_5[+)=Y
M;XDE#2?M,?(^_';=$'3V414JRK%A?8HY=ECNC&AWMP1YY@T_=H;O:A]DR5O&
MGF6+>8&<R(27C$9SV$[I\:QADGJK0^S<GJM1(@<Y#2;1,,"^WO2N4#"L"'#+
MLWDVOYR)S"!;+>H8:L(\B@1 NE:?TNNF54/2GCS(J8:D;=-NU9"T1X&5JB%I
M-23M"6%6:DA:#4G;BO6N(6DU).T10=)6^;4U+NTIHA5:8&#NW7ESR V#*]2B
M_"1$N=D*^]V[YF>[7U&N<6GU\?A1P*5FV-ZRTU'CTFZRO9NWM4\(ZU#CTFI<
MVOJ6RL.0;FWH<:QQ:;5PU+BT&I=V]V&X+;P/3ZYHD7 3ZW;[]-YM#=C'J??N
MU?79/N%HW[+JYG$*QT9$C1[Y,S;T4MQLL/:G$B_F]6!# E8W=]I5N&T^\@:\
M3?V4";6QS 2Z#GZ[U=OIK0VF[MI/:C2G@>?B)[KV63(Y!\:)/XBF&>B4;_:9
M+?N-AX?RWAYYO7)+G5U8#;[.%>[;^@!LUQS2*&PX&$1@2X2B,5&6CA?IB-NK
M(^Z:L+8NR%I:C!L$-@]]DF#3=H1FEP'8J_='UJG;WNFC33G+"FKK_JN>D$6@
M(NK.^:+@5YOV*WJ!5G[EWGNJK2D.[;U25S7GOZ>YA8:<J,80MO]K(QK#8'^-
M)N?19?'L%U^^0;A+:[AJ^NL>A?'XWN;.AD*L1AEW,O\5;A25XZ=@.-'&C"4X
MS=7XOY_]/TDKCJ.]WD -=W?'W6C8&431H#O::_4[S:X:J<Y_^J"B"8H-)P(;
MU>.A_J]?HM^J-GCS"PS>JE3ET82.\WX,H@5Z)*=CN"4E!NX$(G\"2QRWMF1I
MF>W6K49"1:<NU&B!CPF#<9)&Z0C^<KJ X:+VA@]0X4&2HB[D^VFN1J<I3/J$
ME>=$G<"HLOPD2N4&\XL:EJL8$OA9SB\:1R.WN&6LI* %E;@B!EYDK-::-OA0
M]>/ 8?;5[XT6,=X!-#:X"D94786CH$L@NG">N4Z+^S66OBZ$>/+0^KH08IMV
MJRZ$>!0(_;H0HBZ$>$)(Z;H0HBZ$V(KUK@LAZD*(&R9<-CGKNMK[KDLAGB)
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
M9*+2$W(=Y/S!(:430\=#701?%O&)'/9/I^X4Y6A'*W8HSF#LJ$.B"9-2DUK
ME(%C6&NENX9#/(^^*NH"$(%OG$V41#4XN ?O"='9<T8GUEGUX$AB0K'RR$(+
M"KZVU=+0*A^ _H&-0E=N6P;C3,"'2>9ZE[=0;QQX:AS)FN%6GX"-@+>ZX5@'
M^8)-RO)+,45&'"!&OQ:V%12G\PF'NKG&++N8Y=YJS'(-/]Z L?QH^/'#.=0%
M*;(%!6Q ;W-Q2RL,NG2F>VO?/SZ4XC0JC!I $XM]CF 4Y3E!*HTV^:G5W=MI
M:P;WFZD4_KY# %_"600:8L&WF8&\4$L4#N':YY:&QIXY#035__(X3,@+W9WI
M3'Q&BOB+O1NKJ<Z/PMV#B0KLT)&AA.#2\3.+D1)/&2SNTQ0V_>0RU)^'R8YA
MZ2]'Y@:40#&XB".Z],#.B6F$2* _B@IR!V(R2JP9O+SJ=AHX1Q7S8NAX:@SW
M(ZPGNZ(C93HP1.P/XAW,[7L83P"B_%6QTPA'"=L8C#R+W$[,V.SXV13D5\\S
M0:,?_V8<?)V&J8[WTM304)>(1: FKO6&(URDTFFBM/D8@M1!B2BPT1S*X>$
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
M1C^]?_6F?/^OQP>'Y???CU\='@WV#]]^?/7QU\'OQ_K#WD]_2$:XIM&!T#H
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
M\P[2H7W_8C0NU[4SG8X'[FQJW7$\'+VPXSB<5OUNL5#5[-1I;GB@V@5(VD1
M324XDS1H2;)^3HPQ(FYMR_MGNU=,5^:M4JI26D<IK=+54<_'5:5RG/L_K#=2
M>UTZ<B4*F+@!;6T 0B.-%GTD96!YMP[(EM(XNN'P4-="\E_VN&G#92>EH]:S
MZ..)B^/S)>>TWRO@6G52Q_UF&:\/"U[;?$LX8QF5SAJ64$IFI1>1F9A_)B$3
M7YGK>QO^>]HT66N2VL[[;!V<32=3.RR+5SV_K3'?R[FI""10H2F)(#S-Q)<9
M#AQG'(236J!TQ&71;4O6IZRMCCV=&6)>2: %5:@M!JB3O9>*^]DA"E*K%'W6
M=;RB")B%!]ID_2<FE5>8L< P;FW3OA!M5<!7V#\FV#/'0A3!,TXR[$UT22A!
M2?"N^)*2KK#O!.QG!RM8$TDDA('WE $*FX][*1%XD%QH3JU@:FO;H.X3(2KP
M-P7XB]1V*Z*9II2%Q"(&GPUCGQ!MM"%22YF_&?E_5:LV0P$5Y8N@?-;=KY-Q
M(GD"JCR@*5,AT4H@)@2G+95!E\/=S'?JNWV)=@7W8P1W("2@X1()9^@#<8HK
MHWP,E!C.I&D%W/5\;PWY<QFSP08C5&3 K B -GFPR7&PGIB4Z5HRQHHCT_2)
MN4^'A@K_=8'_ NCW@C)'3524-I7IQAN=E#"".S1*J;:4^EJ#>G>\#V82-[4(
M6:/7P'4&/8: H+DE8%1TEKGD;8JMU:!6T#]"T N)RAOC930,HY&:2J%=-(I&
M&QUQU9+O!O)G0Y;*!<MH<=[YE  9(^!8IM7$J5 R*4[+2<\TZ7.V-J;\AB5T
M-Y@!5QHX-&G=ES.X:CIW3;&I4JI2ZKSRD#QAB0OAC"8H$8UURE*C+2H1&=%-
M(A2]3(2B7]<B=L*;L\FT=/F='(YV\LJ5*[#'+^P@[ Z?VM/!U!XW&0)N=F[A
MSS$K'9/!-+Z,XW<#'\\[X/P<_>CUL/F4VNVJ59UD[W!GNC]CC0B>H@M>@=%9
M$T')-!C)# A&G?'>40PNZR389[R.9U\S5JC<7:54I52EM#E26D /TE*HY**4
MT5.T(;I$HR(L:$F)CM96/>A1ZT%[AS^5^&O6A?;8WN%;S(J0H P9 1)I K26
M@J$L9;W(:JVY2]@X9[JF"&U89\ ;QSSG.XSC7FR\F*7"/L.PU-J?'N?O^C3@
M.0,HQ<'T;%QG/"\[S=S'0(1"0Z)W2)*V2=%L45#'+->$A(7I]2]G/#>/_YKE
MU<J8[3%FMAAG+$?B/5(3(EC"!:"0$5P^4R&2:(FC^3PM$T-8GUXS5Z"V$%I/
MJ%\3@'X@G#<JT$TPKTA>",FS<:G K30"$2+J"*BL!8<6P6KJ-/.!9;UX:UMT
MJ8U0A7''O<)W@7$]K5O$^,QIS6E25A "4IL2@&8FP]M0X)1[KXP4SJ=\6HN^
M4/<V;RK.U\$W5:54I52E5*6TCE):I9^W:C8K]D/,>FZ)E2@)M2"TUX#&6[#9
M\@2G10A6*^,=:U0;R;IDPFQ8XMP]9[IL=%BK!A^KE*J4JI2JE*J4NB2E!=1P
MSG7 1)Q%;Q!ELEPJ0A12&3B))"ZLAM=1 TO2L+-V7?(CKFK8P7OJ9(B0J!:
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
MU22P#U=FBVI,B]DTC1:-R/)!UT5ST><[,(HUJ?CMB[A8.V[.<KS693O\QH,
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
M'BQ\8+D&!V:@W_#<>LIB0A %W88'[P-(/CFS55"U1X1^[^PY?4CZ+:3[!N5
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
M>-X?G;[_^K0;E6A^JC:JDWW6>K\OFA=O\<%>Z.YN?SAKO7_+#TZ.SEH73=B
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
M$#BCE@=CHP]R;9.*=<V6''AZ!OR1-9[6>/K"PG@UGBX73V<M5:,8YMI*)+$
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
M327XE\5K($ EN#_%^F^5DC@E 6_N8N^^<D&XR(VJG<0*!W#]DP-!"-XARYA
M4GFGC F!!KJVJ39NB@!,2IU@.R\!HK0^_K__ HS&OU?K<PDCL$#%7\CO!4JN
M F3<U4=ZY3)#FD>'S,BD0' 053B"S&C8D7DT2%EG;93)&)VYD7XN,Y=R,GO2
MO4!>BHJ(F/>>TH#,&]&;?J]P; H;\@_;R;9GX]-QC*/9O:U1;6OD0;<U:A16
M1)D8(^/$2&-X5(K#Y'A'G=(WN/#UMK8,R:2MHT.G)!<&+$2O(Z"9D!PY1A.R
M1=\XGFC A2?^,]&\Y[:VK/6OM[5?$03>_'#HL<!&<PZ"(!G8-UP@*S%# 0<7
M)2P"_"U#U'SQ[G6(R@CPL/O:0V%&O:_=26A$Z\.AM410HR,222;$/57(&D;A
M5T]TRA:S3FN;>N.F(-[4OM8O-K2?[VX;E=A<#S8]5L7I/,X4Q;>OM^;T\UGK
M[#!@"98EUDA'0W.">$3.<HDD"\0(#<8-=[>L.35/%A^\]E"XB4?M[^BX'4+L
M_?9Z%G1*QYM[.SQWN:<J2"<#DD0%6%R>D(D^(6>D,X[J8"2N9^^FV1,X61:=
M0(0QA3BU.'/%@\NH/(Z> $9J6O"3S^Z.E_A6_&?)I<]B52J?*:7WK'S&3#Q$
M-;'@2Z\F)G"A>I#2YX<:K*EKG^]XEOVL:Y]7I7[W=I/ZJX7/2ZEZ?G93]NI*
MGO.I:>P-K\@#)R>N+O9B:M^S*J2N!ZSK 9\BU_-M][33/X_Q8RG$]XUS/>MT
MI1//#[H?.\T3& =MBH,]>.[[@_;!2:?3ZI;C._CR@>^^_S"7KM2"^QV\_WS>
MO/AZL7\!W\_/ZO[9W?WRF>[O'>'\V<'V$3_87E@ '8451L6$5/06<2$XLEXS
M1$V0(F@."Y@)8]6Z)G4%=(UXKQKQEI6462/>8R+>;((FL\HD$ADB*9.W2AN1
M%8PAZ1DWVC$*OP'BL74BZ_KGU='3;/3V>SEKJ=W[!O_I#\X;Q[%39#P-QT5.
MUJ NAUYE@P]>^/OD-//M=Q^'PZU>V,V\LG$4=R:+NC7*5)]Y.$W;&R?X[W@0
M!S4B+@T1%W3_]9;&2!G23#&P 8U 6AF/L%<B",Z8X9G=&*]3O4HUE;5^KY9Y
M4^OWBNCWK,6#<70D$8)L3H+@,@2D->;(:"V9P5&K&-<VU;HD9(74^Q4$\OX:
M]!.H"<RS[12!O'P4-NZ,\M%7BO%!XGBW@KMGV\+S:3KV9L2;7LMWL7;EE@YL
M"XJ6>4S$<!(0P2(@SE-"-FB&F!2,*DXYIC(#&\,WI7;5O7B?OR(OL15OK<B/
MH\BS%DKD3MBLR$ES@WA2%#DP2E"2.C*KO;0A)Y&O:_++#$TKU&3W&5@HE? W
M3G-W,E##?KJA$JV.O*RPJ3+MF7TLE^]37KV_JL6K(6[9$#??Z5809QEL2RC
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
M,3S@K#_XBM*@WT5PY=EQIGGQXT[^^D;C^J!\YL,*,R,JLXN'.29D3T\'_>^
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
MJ=YUJWS5[>I-/\*+_A4'OLC"KQ0?T6>J^;]P)$U;V\U#D@A)7(%ZD:00MU2
MYGJ.9%0!LQB]R[R"<F/>XON_93;"G$ -8FYA>U5Q7"2AW%9<%AY5WT4X[B /
M'R<#O<Q<(0L35G+FV>N3#M;<WCD$# ^>6HM4 #3G6!!D(DL(1Y\(MXQBF2NY
M-O!<PDJ>M-G>Q:O65.[=5&KA\(>YA<6_I$ATRVW2UQNCP@HORE]S:^?>,,[T
ME"N$^DD3<Z[+_IO^\)8U1Z\P.8?M;G\^])(*L%XB"L(2L&&(0I8HBK@T@6&<
M6*2YP<>&O#&3=?U."ZZE4,E%*:,'50K1)1(5ID%+@G6TY8*3R8(O; =?+_C]
M%_SKH4]:J: RAZ[CB!NAD6',HR04<<(H3IG/"SZ_]5U+7;[+FH<8L98F64!/
MGCC58" K:ZG61(F :;'F>++FN%[SI:[YWOZA5M@JFUE?DD_9W)'(2DZ0TII+
MBS55QN8UGS]AO%+R01R>1OCP6^R<;S3>V.%QX]2"<W'6'AWGWJ*7IK+/?TJ=
M_EF9J3UG0Z_8%C%QFVL)NE4.)VP9041#P!Q%43F/.*44M@R&D8^2!"^9,3)F
M:;JIJ< J[ANU%/Q$"@KV*&><X<8K)!@)8"*(@(QU.6ZNI#2Y>WHN,&8;\P0'
MJ[IWU.M^)^W?^WK(B4HZ)(<4T;FI2&3(49JMQL@,SVLD<U.1C9MZ)$T$(>\-
M]W!!KFU#MW&T5JG]^%_C@3]^KAW(+Z-B;YIE*_#=;?CAM).K=XJH8[G?^ZK9
MN(>K^KWL*K9[W^ __<%Y3M&WX5ON"=UP, VA,8:O+(R\N7&[$_+](I@3HZ*>
MJW@&N* @ F$,=X!W&R<0K?&@,BY"8U2\>AX;^*;YI @VBO\=YPC?U6B&X]/3
M;,'D-[O\=%B4XHWSD-QY.:#IEX2'E@/*?SD=].'YQ9BN5^[-C/EZV<I1[ 'N
M=#KGC="',?;ZH\;(?H69.X//A\?MTXDG/36FX]@IQC,]ENMW+68?%F$B5]4Z
M9)NLJ'^]]A;3<YC&G02*6'RIJ+*!@:5VKST\AO>IWG!JX08PC>U!40D[,X)V
MIO88YH+92XJ]L^/8FY]#0/4<6[[^CE./*,K(YH90-,F!>1K.3]3E=X_Z_3"\
MNM-&8Z=\?,P?%-^.@VZ[9R<5:: *W]IYVHIILC."=&H'(WC2]6JW8WLUR6&]
M&%77GC=<G,Q,R.._7(9*(,KCRO5+E:@&?EWCY\/H4QA0Z2*G&RH?T)[VA^W\
MG=\&L6,S!E8I^M4YU-2%U0D!OKK$NF&_,Q[=?,FB"H6G@)Q,CW1M@J;^/1Y<
MY90?1>0&T7Y%1?^DWVSGS)X/U_YU'4,!0&?F\*;7O^U914H/]N[E:0P8'?U!
M(0J_%37C^5LP'+LR8VD<#[)I]E]M$H(U0D<G9>+9^K-6<V^(8IC#;LX.%6P@
M1:T*2'ZNCBSW.[NY:($7%L,0*QF65+N<;TD2LS0QQ\#DS\UG([<W+N'3[9A7
M!P%32'X%<Q-,+_$1 #FC8SXH.(L QS8#YGFC/QX-1[8LRZ@@';!E.+:9B*!?
M06A9;#JVG0R6W]I#F+0*TH9C?WQU\XW&C_A2)Z85F06\T+"G<./O8 "/P-:Z
MD]%^SV/N.5M]8B]=F4N7IQ=594;97:#\^^BVY]VOSXS?@7?Y<.BY,)%PAK#)
M$5[C#7("4Z1=)):;) 3G8+IS_(-H[YT=..:3U9&())+E3H$N*Y>PH%QIS*@)
M5:5U+0N/* LG;P]UPCP[U<@!7".NF$(F\8B$!:4U"?X,,[@)J_2S4MSK+MEZ
MP8<Z!5^7-I&_<GD*/V$"B9FM(=O7$5:_ _<8E#9X-DP+4[T-Z+=>V=KYAM>,
MX6?C/!469!KTNX6/4H X_+>T)(=C=P+SES^\<IY@]O)<#_/TMKL.T!_F9?+G
MRXDI/:X%UO1DVH<3:[Q];1."P;@(GP^R[YUG/!:]6O*.T<]V8AS!V/*]XW?;
M/84-/(R+05\WE4M'"^8YQN)W>&+OZ-() ;$8=XK ;_'>(0[!M*R^ Z]U_59%
M/L;4[@]2=.EGS4M#(3XYT%R^WR#.&>M^@@)3;]T!AZ S+)DFCL!R',&NEM^[
M=#?R$L!/ 4"E5Q%.Q.&HV/TNIR>_\&1^IF\\11!<6.:E.U!LPW>9L>+VN25H
M9C*!.P\G;"*S/#%V 3-QY7/ G\II*'0%!"AG !4C^L-V"L_[TW&,HWSK>$<&
MHE_=U0N*_HI4N>H-U N[U73N3&9S:S3AT6A>3EU.G*G!?!&8-XLSO4@E(\DJ
MY'0",/<N(</A)RFT<"996)2TMDD6T2H\V;Y>2\.#2,/>_F%4PDH2-!)4$\1U
M($ASR1'VX#8%JVG$N9[PAT;>[3R&ZV>",RPM &K# I(FD)@YEHY*I/+]81&9
M&9X/1[&;41/6>UP$3HJPU31N?1K!?TJ[H7 CNZ>#"'O:$)[:*.E7GET<^-\
MV4?%1K?:%%#OY@V6Z8VVM"GZG6_EKC1ANNK$H](IS5LK;$,YN KNZ<00R'?H
M9?7M@!ADNR8OJQO#%XHM-HM3L:/-Q!G+F&G%(YS)H8I(71DW+$C_9A^:]WDP
M'!.@3QD S-EZ 0S,879G*S>ZNGTV,/-6;8\*29M*  77(MNX>0>^>G9.?O+5
M+M\&2^U;.XR+V&YIF!3[\!&8&$<Y]'QL05!SE!%&T88Q5F-HQ)2RU7=C +R<
MD/6I _32HBJLM-3NP6;>+N:P,A6+.&FANA;,!H#19Z<6.V",=GOMU/:%;MSJ
M:&0U*"?G+/N2'VU8TJ--8C65[5F%C 'I*ODI7OK\4G^R7&>+SAZ!K0\XZ3NV
MW9UX#\?M09A\H]"089RZ_^D =L !O&L%NOD!_VC_LP3PB?< IF\GV[;Y[V5.
MQGK%3EE:F],JOB#*?35@T#:03=#!,C9?.@R];^U!OY>U*,OZI44[9:JN3WU<
MO=L<0,RJP_@JU=!F-\ 78478";KM8OS_:$_>\I*RLPJ&+<SK+ICGLGT=X*T*
M4[L8TV2&(O@\_?-X[XDI+'^8FF$.R>59F3;4)^\*7G+U2NU!N5Q9YO,!Q^RX
MB]>[7,7+Q;[7T/QX.((M<W E7H5(H1),J^4HQ-1>G3)=G@>E[+7D=P 1S-'<
M=9"]T_.B<J#P'8LUS>U<.YUX&9LL9:3\4I[E?[2_S:_5O5ZF#(3F9J.#<OS7
M#B"GWJ6ZBRO(%T=3KQZ[/Y>]8K+SVX&L3459*^-GLI/ HO2&I1TU+"UE$*+"
M@'&50%R][8HS/_X1O<T*5ZQ]/Z]SWFCZKE,9+;#'#/NP^>27F\AJ3GD_/XV%
MC79#;#KOH7D/_]\<QP:4SX1<^3PGWZ=JV_6M.".%Y?I>%/C9(J(W4?RI 7C;
MRW<J!,."E@$:G%^YZQN-_VD/<VC)YTUY_B2OO+0(?UQ)53>?QLZS]0ZGGUM!
M5Z]_3:&+#;ZZ7[9Z8Y@4E%R_^*XN^L9M#@K+8Y*?'<00S-9^0E)&'T'<%F_[
M<J/QT)Q]G\#UB& 3Y3#+6UCST3DXF\6'?^03W<O2N95AZ6M6GN/I21.><["=
M^<MW\.[>$6[1/^$^'^!9?[?WO_S9;9[ WT_>\H-9S[';/-O?ZWQMG<"]3SZ(
MW>T/#+Q,T=H^/C[X\N?Q?G?_O+G7Z3;A'?YS\1:\S/WOA\D9ZQSAR%N-$4_*
M(IN,0$Z;%+QW-$@W2]/G-<6<*!FM\YP1D#V:E$G@>P:2C-:S-'V?1C#!U5I4
M&-LHUZ3Q8W:]A2>$/W_Z]=%:XZ-,."BJ*2<A.>V9543(H+S!7CS-B>)=\X@&
M,<7!H'".83)7>S?)=O(??3LHZ!>W+^VM#,0%&HY'Q_W,D[E>["79*K*--!X4
MIL0WV'TF\#^<DIM<BE)%E+,5FT$9]N9Q;(Q/\U]N#&,-L\H/EQ+7W&F]FSNB
MFBQ+L2H%O RWRM>[>#[G48\./;1Y=&A!%Q56"C&=CR9A 9"3P2'J,RVS$<;
M[-]<:;UP7>\7H:S7=9GKZJ*T$2N)@@XY,NT3,LD[E)B2GL&_)*^K6%!Y<'-P
MLESL\HAH@H,%.!09;KU\G-+H]L'8S(!5Y0/FE+?V]S(<F;$)$*2\./.(%[^T
MO[4[\:CZ.MQ_!!M0:;9E)(K]-/&V%UQ?7#-U"_!).N&2S;Z(#\5\U^K*,A4N
M&\67'P'0%1&>ZM<<L"K>$-X-_(A1$8/JM&&7#.7>=VWPX+Y\+3R8<7[3XM+B
MG7.@K2@[+D*MY:QE,MQ1>S0>E<=1YY-)JHH")Y@Z297+?DOYC?4R,V70R 8Z
M_*ETU2K'JCA.*PQFVYN:Y-(9Z';SHN4%*D-Z&:D+,_=Z[>"EOS6[JN5L7H7N
M;!DXRY=6TW;:/RM?LMH>9I][.1V=]M?8:1_W^Z'T"XOWFUQTEA,B*WKQJT6[
M= GL]"]%XNK4@A1)A[G"OERJT<QK+GZEPG$H,A6K4&".57;L>=%E(!17E!E
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
M0C%XCW@R!CD'F!"2#1R( :L(2"#D%IX<O_1RD&#=[[$@!^^ZZ(E#"'B8IKA
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
MKN>[S0(Q/MK^M=,-T=>'!ZQQ^>%0X 2*G>%(TSR:-46*C.82T8!#""Z WD=
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
M"I+*2+V5G&&N4W)<68F#@'=C9=>_'M0;T_6"#=:KY% B @/6@85O#.AZ(H7
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
M]@39!(M]8UOG]J*W\<O-Z4C--AK;PUF//^_@JI26]NRW)?K_RZ[,6FI'W2P
M_JM)0K!&Z.BD3-PZ!HJGYMX0Q3"//K)#M;%=5+CE<5B_9]G1[O?^]8O=GG;
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
M)<1[1W#.F-K$5"^V>N=1'+9RV'=[UN[TWG$%P=[9FXM@LW%[,)G0)PBO3S1
M*,+K:JM66W(/IAN>NW88IC/]%MLQ-?O9&]M;G?23DR$('!U<?N('])^3@_T/
M]."RC@_V_VSM?:[_J%\"@Q__>7QP_.D" .&T,9%^\OX8UG?\Y?/'H\;.E^/Z
MY<>C^NDG<7#Y[A(8O%G/(+ /W_'Y@(!.PNKGAYH:JI,4N=%C3CX1&CGE,6*&
M6FTU%=ZS$LV!_F)XVR_L_,1Y,!$S^%=Z99614?K@DK*8&#&>K#+<]MI@WP=N
M\!G)[+=G/CQ3*LCTSG5W;L2-%/?>MTZ[U^F"<57CF/QT\G.M;W^ ,$JQV\W=
M,.QW0*A>#3"B75A=MM6JQ<'6]6KG1YW::8S]F@>,LLUV+0)$-5TQ_:_6C?][
MUNP67NG>5NTOFU&L"5_:[]5.[45Q?-VF.\L]TV#MMO:MFS,_?N0N;\W<,2K7
M[.4\DES+UTF#[E&VW<X]VD83[S=K<)-:N]//>?KQ!V!R@(M/[8_FZ=GI]=?D
M#;*G -_]VK>S;A;%Q05_QP+Z2^0?;$'Y;;6BA6L;ONUC_!Z!T&#30MRJC6S?
MYK!/'<"H[\;B.P87_];)K;%RJ@[L@>_#%F\6CWUJ3^)5GSZX-R@"_BAWLAI=
M:"_OB(M'MI6&]_LVLG\WU@!W"''6;?JYH":__2SIFD/$VP$&:^>0Q?72,K?E
M1,S[UC0_?ZKEDR/B1>/KH<%.^IC'(1%G$:=<(8.C1$8F1A,S(K+L[MJ:+$@>
M)EK>+_U;2Z&2BU)&3SC0ETLD*DR#E@3K:.T=G=TK$E@L"5S6WQX*JBTI&A\S
MJ4&QU1999RQB8+ SRIGWE(!M?EM%R7WSMG/'&2U-LHEPGCC5$@PC:ZG61(F
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
MJ%BAXFM&Q<<.YZY0<651<4Q7U%@Z9E5")MB(>,(::2T5BDX1YYBFSM"-;<8
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
MNLN=\\.##^+P[!# "FS<O_\Z_GQPR,%&/M^]/()G_*?8/6F=_'-YQ'8!H[@
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
M'>^6K[3ND3J_2AKH> UKE+@&)<[W#T[)[L$VW;W\0'8!,;1E@5M01QEC"G$
M"F0T8X@Z*EDN29 Z6]L0<OVZOI,CR(AL^ICBHZ:#I='!WL'F%QT\RPP6*! 9
M$,<JGOB7%EEO- ?6=#RJ$ERM7W=>94P'WS-7(Y'$;6T"?/2C/0!XW[J8EP]N
M%F7@D;<BKGO6%YRCLIUJ<#"O].].NZ:[^]/=R9]?!*:&..X1SE*E"0=&CP.-
M162@VBK"!.-X;4.MSUL]TV17]"O7$XB\"3W"ZOYQHZLOHI=YY*N)CJ<>V$B)
MTK3[6KIX0J.O!T4_7$2=8UKGN<X55)E9\>(+L&4;QJ=B$$ @@^B!.M:EHO.D
MA/M=,JTJ"M7:]2WI]O+TB\R#U=0K)#CAB%,,=)L'BHB$_9+.^IQ$CWJV?EV9
MX0G;:X%G%(BG5(D!%5M#=Z6)SR'CV+0?E"X #SIB<F!6/H%(F4^O%7]7IZS(
ML*%;HPHK-_+$]F*!ECXP]I4I,5J4M'S1[=ON#)+KUWC?GEC?D6>X6MW^_+)&
M2:4K=VZY&=&?9B)F?.V S>'2%1,[IJ\\W+!583@8]GP<.ABPR:$+ %4^[\DT
MYC&W5PO[_FI=]\?+6B/ 8@38N8!W?LDES355!$D<&.(B>-"6\YA&KD"+%EQR
MFWJ?J?7Y-/+&332D,BQQC4MW3&VW].M2$T"7MS V3+G!V&!+A0P4:Z^U8^0'
M?MU;T4_ES=5'_C4[='<N]BZWOS"<*\<RCBS(;\2=R9#&.4%*,(>9"6#=D+4-
M-J]1)X=N?P@ -=9_4TP+R*(-N]KX7H&UVVSV'?9W[,9/SIG]\"DI3>6X2W<=
MF8(0D GV#2A*9S#&XU='!Y-ZPVY"$*D(\;G+44Y3:I.@2 ;F$9C:GGJ0CTZ"
MODOH;*BZD1:P/X:'4CRZDBI XPR@<CZ]F+^K\^M=IS_H/_GH;UI-#JR*;IKC
M970]^MX =@*LAU9R1)Z=%<D]&=6!LI#<E5T"&'XV; T*E,R%_M#T;:_HEMI,
M*DCW;>#;4=D[U[V>;@\NX)INM],;1(Z:"/?YB@FC1M$;%)>),RME(UI"4R9(
MIUTI@8W-FYGF\0W#=O5H>,E(PX1[QVK2Y#R?S ,XW@4W(J1(1[_W.OU^K<;<
M )"^[6_]^86%S&8ADRC#UB#.8CE3C"G*<A-H;AD)V@$@D?7K^I\]N0.P)H/;
MZR>P_=M?7&SE*U5 QO(8</829!'8L%DFM<Z49M3 UN?K\SFV(UUVQH]7$L1O
MG=Z53Z3$LVLP)V7"E$91++XY"6:W!97E.TX6D]7FQ"!KZKJ1UK.U"793EGM,
M ]A-4H'=Q.$W"9HP4X9@8'S,%5_;X NLIBF,:4:YT]55TM=MR..^[0]J\E@B
M^+#=K=TOUC$L,<\1M88"25"'5* 2.4R\",QE'+.8NW ]^"2EZ"9 0U* H5?&
M*A^/:';V?KLAU>P 41>]Z*/^8TYHA>*;=^C2]SICDL&OCF2VZ=[6Z<7>B<5[
M6Q]$C%=A'83+':@M$LQJ'K!'RLL,951BV"[AO<T>LR55O=D/N-F&"DU<4,CK
M'+!"*@,ZJC>(,-@1EP7L@EW;:'?FH&(>.XKQZC=:L/S15YOLM$@=HT3B:(Q.
MV'@N 8TOHJ%=&5G/T=*.;KE>.5%0MD:QH,;'HG_ZY+/Y[MCW.E>YW57:=;4G
M(&Q]:>02/$Z"G"WY/G*A34J+_O?UTI$MO-[X8PBDTCCP]K@-LSTJ?+_9V&G;
M]<9/D6U]#XSZ=["NP][%'T7[M/SNY^;"<73:<'%EF:,X: 2#1IV 1@,<3;)Y
M%=F (=[.U8NY 02S,E>YXX1IQ7203C@L6<S-S'X@LN9\OE-T$TGERK]+7K.#
M=_=\]\1^X5QC DH,4M0P$$+!()DICK@C+L,YSXF0T79>[.!=1)@S=-FH2!(_
M/>!\ET7WVQ/G+^Y.O;EBU"D68K$T3C0U((YML-Y* G\%\0,97%/O3:D7WGGX
MQ3LN#&C;($MC>$+C#"D,&I4/8*QY8PGHN==3[R*(6W HYKO1KO7&9KN3Q.H2
MB,=I9I@UV@=).-5$2F>L8($8P$*M;4T\#V+='WSX @P*MGV(23M2(,YTCHQE
M 1D5A-9494'[R9C&T@F)S,!C?$^DC:(]U*4>. &8%7!QFLI9O.UV^D6\YDVI
M!G[U51^4ZI3LQ(W5449\=8LV_4YK.+C^ED7M7)X"GV.SZZD%FO@9AYM(F,1&
M@4)ZDV6!:\.DUI);17*&.:PZ^T)HOC:ZZ[AWU>SBR",#>LTI2E&H-[IUKB_Z
M:[],BRF043,K?]VBW52BA?!@*U:>- 5PZ)3L_V880VWQ*AB.7IFQ-(Y[$?K^
M]>.M@XT[2%P45?^(FNT8;],;B\AB\580&IFE/):+XBG_-SD='?V/@<CVX V*
MGSPXA<]UID@4OG.PO=M0E0=Z_N<[T+>/?#+WHG*_5?33"<PR+3"=RMPL(4?'
M#T#65'^.#B#\5K1UVQ:ZU;CJ-+;:*EGE\8H_VF! 7<V_#>IF#&*Z^370TVN@
MK]:@VRM@^MT8XH3;NPG ;32&PGAA^K%!1C*LW7B)F@T]=$5Z0M]VNKZ\N6.]
M@R_A;OBSE/\@]CN]LM%5U(H3\O_?L$CYE5>/:W2'O?X0AA=-]1UX6P/H^R?S
M<Z3JC_YH6-GQG]#_+M"7;XAQ#*^] $;8O)X3HBNJTRH#SN_'>W$38E9/XM!8
M/,WMK[HU''LSKIBR<8_YB2=CUC(RGT+[,.KJURJ>;V/N3PS#QU-1Z1Q]9)51
M!N-Y3 4),=;?B1I2>L35TL1C6LUXC=6]7CSBWAD.8&$F+QF.DDABKD$\3]4?
M!7/'A]6[.E99*+KCY8;Y@M O.^>5*90IX738N\*)AO_F[3#J4W!# *SHI6=>
M?7\%'-7WS?CD^(P)?K>3FWD%'(V?=$K9'!U1^SB,P$281D3\Y'].5Q/AJK^N
M9KC]K<1!0/?!SS<RJ9^.)%(QA6$/=$U?$@1L_<2VQ5 &;+GSL6( W!P+)20D
MU5>D-$T'-UW;)#)\"&54-[X$OOQ:N$AHNM]I5\HX/"-EA:3DV$$ZOU%ZLM/H
M?*J!4&)X&:VKWIRR8^-(0@%S/NI?4=FG[7?-QD_%SR5,)4*/=1-BLFX:76QI
MVP0B/8O)-)?C!-S(#-Z-RC)4YP;'F;>-&)TNJSM4W\)KKER#B6[B<^+0R]]^
M*D9#F&P&&;^).2]@@HXSE.,L?L@)0-^+.6'ZF@7< !NIN[%?9:^(NQ?Y._:;
M3-.+9QQ@7J,\HR/=2^\=K_?5-J\W?M6P<(U4:6*&B)K+&&BDHRI%/9'"W:BL
MHJ&%%-8"C: U2=<WA,@;,?@JR;3=,3&-*?1CFDE4QG:B^1@/O58"KK$?4T*O
M]-+R2J""U8:UJSF6-6'Z0)?](FYX"K+THPY8](]'>G=,<AQ4YP"T _*.K%",
MEJ(BKC([]HHR>Z.E6&_L S7>^/(X(N?[8*V7#/Y=W+OBNI)P6Z-#-9$V%SU\
ME+G9A8_T52!F@0+=+]?B6S7L2@KT%]62.?)MWP-<N(C?^&Z"JD5:.\" MWI8
MRI)B$)\5[8,8!2O.@$!3#F+S%DMUIB_2X8IN\F(/THDJD$5VT(AY@>.9K#<V
M6_U.0O 3;\M,QYCJ$Q/;IS2X,12T >CCXD^?H$CBI#\T\2&C.%VOZ)^6F#,&
MF3@J V+C+!+)F%[,U=0G[""XR175O),'OL(@YZ-5E"[NG'5A6Z<*]W0[P,O%
MR P:PUE\<9+%1;32 74GZ#R>0ZDFZTL2F)YLI?;<?.V_>\1RV!_1I.T5<4"Z
M$8_7 T4-CD<R<!9+$MS0M_'CHUX:Y6\]?>;/.[U3X(G^< 2MR5$'Y#(HU^=3
MY-U.LM'V>T>Z7>6]C('Z !C'G</*O!MGBZ:E?K?_:1]$/<6$-<+H13^/)%6G
MU \FQ=39]&+.2!Q0-D8P 1]=R93[K:,9#29-&T8\7L_RN.I#[F&<9#JQE*SG
M<O7_]_WN[XT__G@?3X@THIW9]<G8C$!4] =)_G6' )YV$@%"T3M+JD1BR9$2
M5(P,[IGC98!_F^WV<"Q-XO1_ \VH0?!"DWJUQ>D?5\@VVL?MV4T;68NK+33W
M;Z93C>35,K2Z13*O?SL-+QZ8T_:X\%]]172=A-\P%) +_U_G'+[H-1]:C78=
M7QX#+)/F;S6%Z)ZZ%5?;F&_?*Z<^DHP@G1O'P[-H=?=ZG9B&/WY._P(8%_BS
MW8$5&,2,_6-0\,\]W#'60U*9.I!#:76B!13?,=[IF%-PM57---%15**YR$J[
MVH(12D\/)@G:,S]8;_PV[$6#,N98-"O!&(>4Q/?L36?#?@2BT"I7&)0Y/5KJ
M=#PE/76\C+"TL*PVO;H_Z$7L[E\=?#/ G*$8E )X)-?C\TUT9P)7I%.:9:RF
M4@6*:(7T2F4R44Y*X9G2>>*3)U2=I$NU6C/SZ*>MF%9,QF.87/>D&8"XGUWA
MR4<FP5F25 '3+!DH:CJ1"H#,DQ;4'!FND<YL=;PD+E:I3'F7A$VRFN?UM1%Z
MCTPGT#Z+$9.>#-U1J4NF<@JEK8C.].F(3$W<I&%K<#%:>;@I17%<Y[Q=SK8#
M!G!Y4!Z6>8*$(XF#/!_HTUCST)5:5%1"F^/5^BY-Q\N&+1>'8(L>&-E?RWAO
MI6. <"M@E:,82B4@XUFXTHJW41WL3U1A3!0]H7J4HGF"4&$U*Q*=W,IX%A?4
MTDK&PW.BAZLTD4?'>>+&GHV.YICH-BLIZ!04_>-.)UF@E8I:.JS'!!SQI%S?
M=F>./J+?O1Q=PHC^,-;YKZI$1J1,5LA@+*XGN+7T8D4"ZW9B^"8"3S6 *TWV
MV<GHB;C,G(';>98&[E6F\3CL,G)YW<(0C9K=V&T%E[=+X^G*#ID J;'7!_@G
M>D)'CE WY0AU/X]@<-(+6HG#R.C);W15T2)T(OXWP(+J12:&>ZLC&]7)^C.=
ME.%D>B:M*O(U $.RZBN!=%$R3'GP;?;ZYNW6Y!X1'?82(CJ_7AO1V4]^WYTK
M]^MJ,\A>I^VOQZE7F9VAEI*=$7LBU-D9=7;&RD+8NVLA;")^^W'L5_T-+(^H
M*?T'A%+?%97W, F@]Y5MM=,N3Q_"%ZL.>H,8S0&E*%4*O[LL4S^09=ET.XY'
MPK7%N_Y^\^-!8V=GY\ZSY?0&LUUQJB?X.U3? ^+M],!VV!X[-_9+QT5I.+[K
M]+K)H=SX/>I%42E:\;2C"35D2C%-SL68LE-.G>#*AH_:9J?RQU2K$55(L&Q'
M4T^WIQP'G^RHSERT^<J_?17JM[HRWJ)OF^*WL?=(IP\*Y5ZGV@]2>;VW6Y5N
MG?)(JC&DN\C;M G5$T;?I615W^ZG=T]>%[7\,@0_9G08FIURB<,POETT/HU3
MI4:Y_[%4]\CWNNO]H"K@]6G0L:?'G9:+!%&V+PA%RT_D9GP"NNF5=G\<PUBW
MOW*Y3R5-361)$;ZYR"*H@B%S0VW.O1_F"WO><*!.+ C-AB*F2)>'&F;CLZ4I
MM]ZX.[%T1ESR$+0RSXP+R.'JHB72P^R2C$1AG/*G\M9J2;))K^-5G.HAEJ,B
ML8O&_GD;UN*XZ"8]I7*4_)K<=<E6*[]/<Y\.9<\L7363!LE^TC_//R"^8&SL
MI]4M)S=ZTC5+M]JX^+<'JSDF.KA.&:6%77-)X?- [;8_RN=*M.+[5;I'P\/D
M.Q<^Y4I."H8KL(Q; ;+^6^GZ>E<]]-<8!HPQ#E GW3 6V8[@D-[4. -\Z5<^
MP\1SI9\P^76K'9H>VW@+KY*N@*ZN^)/C;#H#L_SX$_K?TBDV,:=(R.^."Q_F
M)5ZS^N+*X[,_X>>/BU%RT\22I/J(KLK(T090YN:KD!R WUN*T1K8ZMZ20?8.
M/VTW6D6_S&D=P .!1?LW?VVL4]KI#Z[BG.?>@+V:,F#.S\_7;=I+X.@)A@1J
M.AUSXV9R1B( BJ^^'\71Q^KX:A\^O-(2X(_1<*I1K(^V\>_2%=^>3LM*CF>8
MOBN7H,**&TPI;4/R[\:,)7C*N89=[8V2&&:"-BFHXJX4GQ^LPMTU92Y>@.Y(
MKM4=%XN?U<; FXI[,B7NKTC(3LRT#/XE0"C##$M5!4;,-KFV*<EXV!^GQVZV
M=>NB7_3O*_+O3N'R!5 XO9;"[Z=VI#\_5A78)M1HN"11R\O@%#K%*?W1BG4F
M5VP4T3)7*]:Y6K&SZ14;U:SK3ZS8 _+7\E3+)2K;_0F3:C@X[O3&-2!B2#<)
MUW)"*4T)-F=P,0U-W99N/\AR;9<OFT*EV$QS<B*WUI)OB#:"O "T8>N-R?^-
M"&VL0@$!]J>0XR#V&2Q/JU81WK$;8&><@_7L?3*P,%- ,H*,WMRZC/!A,+$N
M4P;)1&K:<LW1L4B^U9X]F7 6_ 6P"[]6.+\?IUQ=G9ML_.8K+]2GJB_3:K-%
MF1M^BT3*2,Y7:9B?8,JZ\:ZE>QI,U\W&9LS5[,2,!;AR9^O-=ZLTWZG:5%F?
MP/GB3?6N^*H=]\05"/8./HPK$.R=_,EWZ2[<_UNQM[6+/Q_LG1P>;)_O_0XC
MVOJ3[]%=O+>UU_H\5X%@F^X='%T>7OYV"N_"NY<?6[MT[WCW -YS8L_A.W9X
M^0'OTK]:_UQNX_T/7YS-*5><(9I3B3@/.=*9E C6E&DA@G$R]KZ38J[I[TH3
MY4TU/SX%V%<9D!7)-L*(%\<]TAX BV^& @^FD>0_RNL0*Q<,^^O.L\T6GDN.
MY=41S# >R'Y3GHV[>/O,XL)$?,?+<5R8(B;777D%KX(GG^RQ=_$(WTU8>F56
M8C'?1T_X04J[BH?\TK'WCAV6OKB8#UJ&772_3%4<'0@MW>1O5B*;9B$IKDJ*
M38:O3[%YP&29'['G:F?03(W>EZSX]LD'^)AI-0^:*OM=9"3KTZU6%^#?BJO7
M!^79@JLI+#SI. I?332V*$\>A5OJYBGS.KIFXT'!&=7E?<3,G9WFA (EQQAZ
MB\/"8E:$4+I>YA25I4O&X-F#MR)8Z);N]OV;T2]O7='OMO3%FZ*=EBO=-(*#
M"G'C*[[Z6&]!MRK@3*Q0?ET!C13K64XCU@QZ\)\;O;B"H?4$0[\,W/QWDJVS
M_/JO\3JY]KOO/18L1<YN]MA?TI#+8</"Q$7_?]?8VA4$I^5]0[O?&F1:?8LK
M/KLVY;*4H+MD(%4_HO(2[1\8+6\RBCFP!&OG-CB9\=B#;<1V.Q-L]_&*[=Z7
M;#=1%RE:GPO@M"* Y>[M@I3=7IS_LJ7GZ]KTV'IJX?[53+IZ^Y6G*L[7-%\'
M"^D[W7W2+K^0-7A1DQE5FIYDPZ7J:C?C#U)#^'.E();7$/Y<]BO',Q#^:=H.
MZIS]_^U=^W/CMA'^5S#I3'O7D2GQ(4J\MIGJ;%_JQ&>[]F72_)2!)<AB3)$R
M'V?KOR\6 "7J08J2J0=)9#)G/4@*C_VPB\7NMQ.?C(@;0+#+E0LT)E59[*#K
M#?0[H]Z_3*?>KU)W*]69RLV.6J7."#.B2ET2O9%V24GG3^]*NZ0T\Z5GVB7)
M)"1!3(AX)%J=-+I>)8VN5TVCZU72Z'KU-+HN-7K9YT^WI$8OS7R9V9X&'(S0
M%\=[#>JDP<TJ:7"S:AK<K)(&-ZNGP4VIP<L^?T;:_$D-?GKS93'2()XUGR,2
M3.*RO/-LJ%FX;+(PL>S -.-H<8K:YCC%[>*TCQ>PV -"UKBIG*V#D;![C/%^
M,"LC$(X(Y^AU%TB]./ERG+/1B*LC0"U39\H87L>\IF40 16"33@CC[@!BAO$
MA#TB42)NRXR1QUZ7&\)9>>81CRP.DOZ:/:,'GI6^R1&-Z4.S&8<P?4KH'9]/
M-E/X= 7%&0*G+5J+D?UB@4H&]C,^)Y8]F9:A$Q/TBW!5]!OCF0VB_DB44H(9
M'^,!@=OFCP%96<[TP8R;W/:B@ HF_WT>7RNNGU?R\^)" 0W^2YLN8U*WP%T[
MP<!:#136@0+,(XSV>!CYKDVWH*P,"!\,SKX,4DT"P,4G$1:\AN8$AWQ_&G\U
M^^;?&;0AAP[1M;J*9K1W"='M*%:GLU.$;O9W76.W.S/#B;M*IZOM.>Z7)XZL
M#+DW*1K,W4V+#K,ZQ(HSD[#-AE8+>O3#]I=69LAN6+WN_8S8Z??^@@1]WYXL
M\/,DIG<I5TOD$ZSMLUBU6#K;)$1,F:.X_>^5MJ)^<CNI1?"WP[.H-FQ$]C"!
M^?89NJ(>3';3.RYWTRF[K%$83CXUF\ ;1ANH/'G?FSV_/X*J"4TR>,)^DUJ\
MN*D:+9/^UZ0-555+5[4V?;*IFZ;1') W75=&(=WE]H "391=N2>B# -P3D#Y
M"59%<\A"\^;659S!U(#/%?1AEJDI% 72%1VLKEY,K@84I*C#]O5P7Z+67\*X
MFN^>XAI,#V?J#N2?]/^OF(X&TG3P%ZLM].$+?0AK@Z[K9ZJI:VWMHR#(2#$^
M/Q;B-RH'U#4)]:I#O9T!]<]3![\&>4#=EJ N":@-J;\K#VI#Y:!FJ%I$[PR+
M@""&0J__O*#35^%-14;"NS3PECJ[6O#F+S4F-VJW28?Z[8SBP (:K#>*=6T@
MMM0<\XD--HM7G2-L';"U513/:IRN@/7RG&&9//H1]J=(XR$Q24#2%I[IAMDQ
M-N%1J0T@U9:B_EU"LE*0G&E<PS+:;="X:LO@\$L:RDQ;"9I2^@&<!'PGJ/>*
M_0%G*DV22,X9CE9Q2F7(6-7 9B$:F(.:J]BNU+"Y "U5;/7QW%XTH8$(9.QR
M&QG U7OR"0=7?,P(\'@DX2N<DB=7 ?B<8(HN8/&A\$[P_:\I",!8"KTQF5=V
M6+\>K-EPR_7@6.N!+A5\%1>$EJ69FFI:?$'H\@7A=D@E'%T35LTY#>_GV'?0
M?10$'N(!)C?>=Q9,CIC-W#+7@[J["FJU0%#'$>V(![.W+ GL#< V)+"K!6S^
M4C7A=<MDF^D_5/-%>P.$J^L0GJW8O]K]$28.^HU^R7A*&5Z^8KH[;C'EF8+T
M-;".]]W_34%O+WJ*@A#I\6.WWW37";EMB=Q*(M>"UUJW"7C5QJ\<=F,R]E15
MZZC6V=#F(!;PG9OI2WI8ZS <6=L"?"V:T[QHW50GVEP5BV9(.&?"V91PKB*<
M-15:K5FQ5YM"@7NUJ7(6V$X<3X]%E/@F;*N:<$R_"]1KMM/Y7>.\!:J$=3:L
M.Q+6582UVF%:6A7V=>=%9^IZFPVT1U'T *37#O8%OA_()!3*FSNF.MMIX\VV
MM:K&SY6PS8)M5\*V/K 5L: WG@M185$(R+R"NK<BGXT%D-SR ^>??,S\5G2V
MR%;8ONV'WLP]E@9L70)[S\"V)+ K">SDKEGM!P)[R6USL;OF18AOY0&3>^;"
MPDY:$LQ5!',76JW'SNONBYHPKF](2$UK') $AC=@]9;^*HM(P?[S*YY"*4?T
MLQ>0!KJ^/I\YM.$XV&*XZZ['<RFX7?8SZ.7@'=I/W[<WR>!PI!U+4K$K>"H[
MA"S]%I=^6ZYN($N_R=)O2Z7?)#N 9 >0[ "2'4"R TAV@%VVG3*_L)*[ &OQ
MJ%;MPE$M<Q"W1*BT[0<A6CBIW=-V='[2:V1M2?76;'?RM\V'MWR/JTK?4BZ0
MRQ2(*H(\(QY#U>BC/'? L?[ 7A\$[#.WK]J*\PW7^I/?E<HHXS7RP5YF.E0,
M]R+UR6I9;;/3;0XZ5)WKW<& #%4# ];_$GI]_N$?NK62WVAEYC=^2&=PA$2'
M"516MM]0#]X!+./,!C>D^IHVP79M]LB)[[U-49!,=8AI5*D)T&ND'?Y.?-M!
M577.;CMSY2"4/\! -,K"1'^ L9 C$8_$6M5?+^4NLYTJAH'-1KWQ!BS:WEKN
M@FS=?H;BU&@1[D5?\?"ON$I>'!3&#/W)4M;T>AO>D#;\_F$N4Z,J"7/NH+/B
MZ$WK14OD-":A?>.Y9Y>"70!="#8"7@8+JFX3-^"IQ7>>8_>G#< H%NR <':O
MFK&+K*#$QI\CAZ*W+1UON= K,Z%JA%XM+WJ%IGX_?K5U+G.)W"*0*Y.=*HE<
MSLS7X<Q\HC]4[[YH<$C6>LF@UYW!F)O+=Q%XPP/"[6LR'%)H,Z.;N;$T(]/[
MO:O:?0>'7ZW *U.>:@1>+0=X63H15<8O$9TA5N"G0#COD,(HX;P-G&6B4S7A
MS%Q=NM6<ZV%6!DO8OQ0 _JI%O5XWSZCYSCDEM>VRV%G?<]B%#X1.*8:3K"5X
M"[)J,W9&%<7^PU>-CO1QY<&WUI+XK@>^-?K<LY@K$Z@U"_5WS9S+/($X#<^[
M, Y(/&^#9TFA71,\Z[OB.:<'+">B=Z :X :X!'0^0&L2T)4%M*JU$@;X7A7T
M K]'@>9VS$<RM^,EGC/Q+ -#:X)G$0:.X\CO,#T@?(5-9#L6W5S8WL'TEMC>
M$MLR+JR:V&;.[W:KR5QD?TQ\;^S!TQT&V[>6I5D<VW?Q-YM8^];C>,[;I_,,
M#@T5KZ?;XLD2R^FBK*FR]N,I(SF.S]1$?*:FJD'T&-@#P6G]P-]@'ZJY><.E
ME(GZB+$L05XN,=;5Y\GXB=J'8NOGN0'A<<*_W'W]"5U?WS40<,5!.A!\X3.9
MIJOS $VB1[KG0[C?]R(W!)TRM/UQ?41=5NL]:5'/0;ZCFA:UH+Q7:J10@>^%
MH>>[9,I2XYP(7!C4B@GH4.,P\@D"YB6>#6<'J.>Z$7;H$D_-EGE]'XB%KX_-
MHDN;Y:01L+S8ZVH<<3XK*2TJT=[Y5.3M"17H^=GZ+2][MUQA_B[R@PAS)\(]
M2_+4\9EJ?, ?8[,G4=9V5C2ZUV<Z1;5THT[PD$P,I8*'MA$>7VP7TY?TE83'
M>^&A2>U1*GAHNV@/<._L"!^UBWY5'I1S!2##?DO5VRU^Q#3P)B';@LPOCR^R
M6N8,:MA_Q"X)SF[?'&K7"91IK996&Y1!EMG5S<,) .T(G?_?Y_MK*E=!R((!
M+T05[W7L=16;\8?S_]1XQK_A-\_UQE.Z'(7$#6Q!23+&=1*!\]ZU%(&D"% U
MTX\<KK2N;??Y$>+_:R00%Y=?I$ D!>)"D!C55!ZN>Y^E/"3EX1H_$J>6HG!W
M?RE%(2D*=SZ!8Y#<RF*EN,'!>=HMI=O6=^%I-Q1=W0M/NV84SM-N:8K1MO;,
MTWY2 GH*T3U'Z/:5.P#_ GT>?1)^XA%J?7H;^$B0Y]/7(O84BEE-(,N+?HA]
M'[QI<+&RS:H=@Y!Y/S+'[WU7GE(S5LNQV(-__9#GR$S_X<?5(BZ)>B&J1J=8
M"-H92-6GCA:+FLT.D3^=P2=%2]9*S8X5&GM69>7JV^57I)K*7_^BFJU_K/X[
MY[1ZX+50%MU$Z_O</D!WUA>-N:$3JZ0V\9"U=4ZFC(ZVY-A;K*"26\[-F9SO
ML?A.:>KL'+TM>RNI<S#Y759]Z]>GAZN?;GK??KV_?,BS\%C%+SP;-31K9M)1
M#ZYVG[Q$ML]T;Y#SI*NQ%"2'1CA  \C4ZN,H( ,>:.'S" OZ,X^$!6/PL R;
M_LPC&6%G" &C\" F*N("^MXGD4MO8L_#43CR?-JYP>I2>931XZHFOV8IRV:B
MK1C=;N%F?]M26IUVX8_5%4/?K;'9W[7U?*6DMFFK9BI=,]\V+>?.I_C= I>A
MHI>CY>)$ZS<,2X!:[I-U6GW*MPE*G(O^\]%O_OAAOE1^S%&!2<^HP+11",S"
M+BUV(W[,^;B ](1/:(L=>0DZ-:?HY:E<>K6Z]WGZZ<CUVH[9^V;03-OF+J4#
MI5V6]N\N3O%::9SBRB>^HZ#=Z1<57!)#*59'%JL36=[RC16<TM@L*P6BS,Y'
M-AFN1J!QTRDC1"V/+:5FE;.4QI0TIJ0Q5>+5YMW&U#F<0CW X8:#?6E*E4SG
M5<246A!"*532D,H_5MQT6@G.7S:=5B[(8SIIU@F93JNGWG4^*-6+.2BUY$&I
M/"@]_$$I0G>WOUW>H]LOJ/?MV^W]S>7O1PK5R'?F=XG[(S0A?N"YZ'7D!4!;
M39MH#R"/?)YECB<3@GTXW'2\5P3GF(^) \R ;77I-9X-!ZW+I#YL'YRT QKL
M(P(_S0]EQPW.TS.,' =-XM1WH#()[3":U83SR=G*9XE;0@]!(!8\R8M"=OSJ
MP9DK2\Z"4]O0CPB[R<&O]#Z$16[]&9V%(=S*NO$DR,C@ ]ME-[IX3!H0T=7G
M]P<AP9S^FUY'V-Z=\7W#3\*U["O:0'$63/M"YN/<2 RQ,Q540_R"/I[@/I"2
M"DYQ-MR-^(> T(B^YK?0>]&,4BW(P0"P^!AH:<!ZQ08>GB:2_ )^3AUZ_ 8V
M@F@@@DP#:&K?<UV1UL8NA2<T$D1+\P-V>,#LD/W<&X_M ")9&^@)SHM -MAQ
M>("I;1M/1K Z&\$Z@4E,/+N0"R,=.SA?]]AG=+RA6"&_D3V!FC=3%#^;#IC[
MU$"P5@VGL:#2S@%A"'M+?R <X7!S^UB<'YT8T3AX2__:/KR 69E)+8%/YN\@
MDG JI)&* FTV1!%"G($(+1AX+H%0@N^V'T:$#[<W3 ^M.H4EI: @C'F4!41@
M/ )[F(BCX(N0"+ 8>@Y]!]/%T14LXHXW8!;,(< &GPJL01-L$=@Y2):'Y*9Z
M[#/98L@/&Q9!C1*EQ0V3;>,B-$-I&6;Q@1&*VBW^J7I'T=OI7^_Z6)5^J1<?
M$ZZ:2K>;[[&[>T^/N65;M]O/,D4?8E-BK[XZEMJB=T[%![#M('VS0V>_ U16
M\0''?)YM_6F%ERR?UQ@Y6E<6K_.RE5^M0X545_A2SWSOE;_6RMC+?1Q55F3J
MW]>GTT-L]B%@RGJE9:Q7Q9Y/''-HY$)6XI[M:BV5TG[(PF.I( ?V0_K)8$5$
ML^K60S'G<Q69;&DOU,9>D M7:7MV2M;"J5]:#K_D%O8&]AUT'P6!=U3VBN-J
M;&S[8^S&!R.?/>P/X$U<0BVHI/.Q0(U7 ^VV9Y@<;N62JW5)D0BK]06CN K"
M5]NM[7)]#4$F5XDR)_$R77/3K!1"+-4)SZC9-XZK!7FY3:F[XCL?^10NW@2B
M[CY[KW;_N;;Z3ZJ[\HBN5'=BAWT8]%8+Z%+KU5WK_8+#T12=^U'0KZ][3NJ[
M\@BMU'=L&/:/VVI!O"Z:;F^,(:<'@60L[.5WR)P*I0:3&NSDY59JL(7HS[U"
MMUHH/STE=@I<5J<GVJ"9+AV"7<]'7VSB# YWO']J(BL54WG$5BHF-@R'0&ZU
M0%YJO21]@ZF^0=O'Z"M^QD]>?6-!I (KC]!*!<9]@WO';;4@7FKU5:]M%9^J
M>_PG#NU@A+Y&SR/B_TFVX6XHC4!6,1M$:M/RP$UJ4S8,<K&1)D!EC@?E9C?3
ML/B%?+===$=H^[9Q_)1&P*5)499>29.BPB:%7&:D,9&M6"4S/1]/SDQOI#/3
M-Q^]P93^&85CY\?_ U!+ P04    "  E@%56BMW+*# 3   0W   $0   &-A
M;'@M,C R,C$R,S$N>'-D[5WM4^,XTO^^?X4N7VZN:C(08&87:IFKP, ^/ <#
M!<S-W:<MQ983W3A25I(AW%]_+<E.G/A%=E[ =\Y6+9/8ZFZI?^U6J]56?OWK
M=!RB)R(DY>RTT_NPWT&$>=RG;'C:^?9XV?VE\]?//_WTZY^ZW7^<W5^C+]R+
MQH0I="X(5L1'SU2-T'>?R!\H$'R,OG/Q@S[A;O>S(3KGDQ=!AR.%#O8/#I?O
MBI-/'STR^*4WZ/8.]WO=(W__L(L/!Q^[N'>,#X,C_7?P?GAR[!\' <:XN^\?
M'7>/\.%A]Y? .^H2__CX"/<^!8?[GF$ZE2?2&Y$Q1C P)D^F\K0S4FIRLK?W
M_/S\X?GP Q?#O8/]_=[>/VZN'TS33MPVI.S'0NOI0(1)^\,]?7N )4F:>SB<
M+C2'"W3ZP>-C:']PT#LX["5--2-:PIHRJ3#S9JQ]);KJ94)D/@W<WM.WM9S]
M+NCM8$&2KV9D:3$?]^S-#L)*"3J(%+GD8OR%!#@*@21B?T0P@H 2'XP@)!KF
MA0:IVPJ+(5%?\9C("?:(2PV??T)(0T/'$RX48AFZ ,N!Z:<4RI!UD(7QFGM8
M&=O4+64RI$S[/1(JJ;]U];</4^EW]JI+C61WB/&DEN0TC94>7ZG3@Y1-]HZ/
MC_>FVLCR>Y!K.*9]5W_L]@ZZA[T:8HLLL+IL^-9-Z#;1A_D#5J\/"=V:?<A]
MJHILP45IOLN*W<A_2BLJ(2'0H_]81Z DWH<A?]KS>,24>*EB_'DDR9<Z9K_
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
M@+(52QI-?KL3BUO/X8*4+-A8(#E>LXQK]1=/5!6)VY2,TAY;^]T['JNVN8V
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
MMT!XLAW"J/B4?'8,M) 6%,\*(AI7CU11ZRAC2OR^2=[SF<=[0W%QJ0?DM:R
M;T6F5N'EIMSZIEEOLCHX3 :8JGNMTB98UF<CSZT(H;4KS?M@'P5X",?]?9+J
MI@]U*NDVO:R_3%.Y.CFDV;ON*V']1YA0;.I=O:5#JCO+FCV010"?BP)=FWV9
M@CDT+ZZS$[ A7'P])<':2^O$1!(N%*FM!12U;X15";R-"KQQIDB?M-*M]S0/
M(-)AH[]CV K).1'D\!17:NUR:\"+*A;'E2R)_NI:*^[C%\XI,Q_:,F?;LFDD
MG:;K9>12L0)3;:.R](LCJ0%&*Q4-0\>RD3&W/I"LSQV"VCRM]/>:Z2'$#>_2
M!\SG$YR5!XLJ=H-PPICC@#EI5!;M;L=NO8U1[V7-%[=Y>4\*?7\RF<P^UQH0
M])^K?;4:U&X<0&/0"%D*<*XHMO4B@ROH((0L.,^.I]+Z<MU)!G;T)N U6-=
MIW1^5FF'>5GE]8]IA\0P0ETAK%I<U6*] 4F%D'*'J@E699\"N4F0@M5<B4 >
M=NN]FR; AV2JA[<.;NPMGIPK#4]*CHD>3="1ZUH(/LM<[V%YB-'13X)5VU8,
M8NO#N=[W!D[E@PR?UJ?C1G_.S\LP[I;>W*\8YN?=JO[:$9[,G9]WM%NR.]I&
M/L;J/MO%8^MIR&16GSQ"S5 [JX!)6WM5E0S1ZD@.K(LA,VZP>91P*YB> V67
MK$>7L2X*!)5J7:RZ=9&5S,)P%,GUL3_P?03*;1BR9W"\CT0&8@JQ9EEE%L$R
M6_N6\ #1>0LL!15"2BHW[P;YPYC"?CAV.GGV9[Z>ADDU[>\^("[6=N!F#L41
MYFROSS_:O!T^FE;F[L;3ZGGR6N),.R$L(@A?:V+5_E0^I  ^RI23=*1VFL=J
M=^!I<(OEVF<OHX_-:(O,*55^)U%;L_E,H]4Z 1-:L)2<TKFUZWXWHD$9O58\
MV7(+I950VEUWNA1 /)^=QT4YG]S$N8$H:^5B0;%$<(GT(HL*HB O7PM$FP(9
MY]S\EM,^  >5RML?CWJ3V4EMV2:GZVM;$W;C8_NP7'=C;V2P+AY2.^"4$*R/
M0M<^*0&6AT<N9@LB:AN,*3SK]BWGOSV_14.EY6>]K&W_/F!>=K2B#WY=:A?1
M[E/-9Y"9.:$Y9.8=J!(\!.T+A!)-C+SH4EI[T3O &I)I.I@1VWHLM11'P_2
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
M)YC6TO'6984/Q3JT"*$YY[8IMMZ%VM26[H)V:>ZK+IZ/?"HR^R0@IKQLYIG
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
MY3M;K?+UI%?&%5M;?"H'*D8-03,&.EJKI,G.<+V1_;3Y.Q\'2KID=,.,O\W
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
M'X?^)P/\AX*1V]O"'V=;_#H:_9.,VLE6*RU>B61%[667:B4'TB*==N "HS/
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
M]YX@8E7NI!]%M\LZ03N[+<:;Q=([@LHI=8!;M<3:=C1-;PX)FC>YRTDF:X4
MEVNK+R,L!,D"V:ZD^FJZM["YE^@ RWI NZ$K.':Y71I@J2N??;Q_B7&;)=;L
M>-XC/2XXX0QDQJJ'IU8%!D4Z?$JA%)GI%\V[KW>VFA^;HUF3H[;(Z<"EUY3S
MM=;CQ1CQY7"*8YQ,YYO>2%>2-06*L/,NJ1R<SPRXS(Q^Y6F5)WV!K%K4CQW2
MZ?6Q-XY.>F*A8D9DS0L(I^J0LCHTAI9#!T"4-65>I](\ROL$D[;VLAV.(NS3
M3-IBSAEAA )OM:M=#S2Q,'"(PKJL>)%!M#:''UG2UE88N#-I:QM9/)2DETW6
M]"-I:ZNDK:U@<HCLEUUD_%#P6X>P%+I90(G:I32F L&@!&&2]"@=9M8Z.^+A
MX':KI*V3@^TVHNTZ:6M1O' U;;"$1(S*X) )TFTP0] N@:W1PNB%H6^Z3-VZ
M2<P)VD*=R_JN!*Z=!=6!@WA59IG.L2BG$7S@F19J!+@H+=B8&9>876X^&.CQ
MIOTU0\T.PCE*H/COP_'W156WO&*7X\O:QI&W?VW[,/.>2U^*0J-A2H4B6&)"
M(0;GBPA1*ZMY-#RLBD)O3\#1@]1>,Q1U%GM4;M["G4,H+ %WUB'/LD1S,K'4
M9D'JSJH8>RDE$XHGE0AC'3=8\TC(>)Q/@K!*%B^M[NKL;KV8$[P!VN+Y8,6M
M6\&B2RWC,"T%O;!9,R8AIRH#Z<E,D$Z#Q8*:"0P*.U-@?O2D?% [8W\ M4Z^
M7;746]?XTE)7K/+KS56^'_V*WW[ZDQ2-]Y]Q\ G_& VGYSV)UA63#>C,/2A3
M,MG7T=<IA;HDYHKSFXV,.CCI3V8?/ !DM!Z5UOUJ7P[_'X;Q^\^CGM#,ZQ0+
M%,X#K9,L*\>2AA*MM+Z0S94WRU\_(-$_L'\*:&@81S[L.@G&V$NHLC29], Z
MEUPQHVH\7U?WJF76!VZL.BW<5[)_(/\T$-%PHMI!5_IB-!OWLA ^R. AB-KW
M2B)"U>J !<\=M]J+Y6JU(T._4OT#^2>!ARZ&JC7+)1#)I)23!RTBW5Z2UX9N
MRH()SF$N7H<2?R0/'=6:/8ZP3S-YR(<4!#$2G%"2^%B;Q:H:+F'&6J:\4<T#
ME8\L>6@K#-R9/+2-+!Y*\L4F:_J1/+15\M!6,#E$%L8N,GXH^)7H(\-DP,7L
M00724)SR#K(.R7O,,?@?'9\>)FRW$>U!DX=TJ(%FLO^0!0,*.>DV-FC(EK&<
M.#$RVL:8>^S)0UO)>N/DH6T$=:#DH1"%$8*V58ZE:B-%@JNKU4PA6H$LATX3
MSWZ@II%PCI(\-.?0Y"U.R.2?-RE_,:LC@6HG_C!,V#1C:,-WM4\3VF612[E!
MUNF0BU7,RJBDEX%[3$X%8W+.:-6*W* -WWKTA"#G$HE-,RC!"U *%:&_#ES(
M"HW4=+3YDYF6_>KH72LN.Y:_GDTGTS#,_>&'Q8R67DG!^50B.%/; VJR#YT/
M DH)Q?',I,_-W4"M%W&"IWA;_#:KD6P"@U/J/W'?^'2.*"PK E+*Q&4F--!E
M*,'K8HOWTAI[,O"^9RT_4'X,4'1@4-%J+D;#^<W[+'SL3Z_&8*V]<WO99X[%
M"9!L/C: 2'>R9$@:D]0\NZ1:5P9M3>23@V>W8NRB0T,S5[+1J5X8$GB=8*%"
M5+6"G@-**WSDUOK0VO!_BK&CO0[/HPC[5&)'WW5;%4YZAB%!K"DZBIL $;4
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
ML ?3#PF*8)*O'=<A"-1T!Q%I,0D%/**R/"5A56M_YV'!<$_$_Y!8V(;7'6"
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
MC^A##3TB3RIH7Z(:W\GX =/3]C0>+OX1VNQNX[M#MUX:??!-Y7-L8#L9Q^,
MC>XUEP;JF,(%V<290*.!J%C)];.']9D%$P2%:LD$&8S19OS090IS&>Z,3&@M
M0[0P7HK/KNX$ZP/2.)T+39PIKC4=D DK/2J8D=*4P ,(W[JE>R]@)^"B'*3/
M8:TB'J",$;R59VEURWKY#A/._JFG[QJ7LJFVJ^",&U>_<1=D 91G$-&#E=D'
MU7H_V87EB=E%$Y&WOJ2PI:^5N!#S]>^U)A+MO83SU<T7,MSP[:W+VQ[I40-L
MH@ZXO#>*.O2PC*@&4_B>^G38HGHS"W'V>59[9K_XLEB0)3V+R]4&T'C%= QT
M^+Y0&WQO#]!^S>\89_)%OU]K/UG)W4(:NDK7C^N/&);XQV__ U!+ P04
M"  E@%5658=1.A"L  !/, $ %    &-A;'@M,C R,C$R,S%?9S$N:G!G[+T'
M5%/=MC:\$>E@Z%6(] Y*5:J"-!$1E1::THN ]""!4*0+""@H"$B3)B"]$SH"
M"E*D$TA 0&J" D%"\N&]Y[O??\_[CO\_Y]YS[G?'_=UDC@'LN9^QYEI[S?7,
MF;GV)DX3EP#Z&]IZV@ )"0EP__0'(,X!F@#IF3._/J?'V=,/&249V=FS9-04
M%.24M-2TM#34-#1TYQCIZ<XQG*.AH6>E9V!B9F%AH06QL;,RLS,RLS#_ B$A
M/;WF+!D5&1D5,QT-'?/??1 [  ;*,S2D0Z0D?, 9!A)2!A)B#P & !(RDG\Y
M@+\<)&=.VTA.04E%37.J4$</G"$A)3USEO17JT_/!I^>!\XRD#'R7KI&SF3T
M@(+/BUDF+#F7DE^CJI/ESBA&0-;6.YR*FI6-G8-34$A81%1,3EY!\?(5)<WK
M6MHZNGHW[MXS-C$U,X?8V3LX.CF[N/KX^OD'0 ,?1SR)C(J.B8U+27W^(BW]
MY:N,O/R"PK=%Q26EU36U=?4-C4W-7=T]O7W]'P8&Q\8GODQ.3<_,HM#+*U]7
MU]:_;6#WOO_8/SC$'?W\91<)0$KROX\_M8OAU*XS9\^2GJ7X91?)F8!?"@QG
MR7@OD3->,Z)XX,7$)Q-&R:R1G%O52<4O>P?#8NL]2LTJ((<2Q/XR[5\L^]L,
M"_\/6?9OAOT?NV8!6E*2T\$C90#4@1,F7"36!0]"EU-TI_&<PU(\W2^W'3R\
M'3>G$<2.?REI/7O%6KNE.2QD?^4"F<0MBU R!WC7"C;@A+XR!HSC1NT2(*-H
M]2,ES^B< R%H.A'0KQ7;AP![E3C+;"DBD,>")24"I*VJ1& (HH[RAK808DQ[
M0/ASF$,B(.GVQ?D-2(P(1 Z@=W_RVM"K8Y2[%_%U^00VX7C$>B3L*A'HV 7!
M]R;;3.)^0_Z&_ WY&_(WY&_(WY"_(7]#_GV0\IB<OJ"LH/[);(;)$# NO_/Q
MBYU7 :6S^N7Z;X=HL1;Z[LR#=(4K*Q?=/D#OOPE_!.U];!QH&D,$5KZU\\"G
M7Z%M3J0^EWUQ)AULU2$"P@:8[X2>$48B\,T_TKK,VOA/.*!(7MP_5,1[Y>ET
M>A',A$O0AFY.G:>>>"K4+I7%3+_$3\'"UU.SD=L?'>V:*I:RY:(NM[YGL9O_
MQ,^X)#1YT+Q7R003Q'(W] 1K]K638$VR4.6&9M51_>8UDS^<ODCLJH3W(1UT
M=]R1HD;VR52,+ X.9#)Q'6<J<K%!$)Q3/M3B*E8[WF>Y,I8SLFUBSR6$,I%W
M;6Z.7J#US([9';GN#EJ'H<#4LX8715U[L:#M!)2!HD$58E1%'6W#,;N >X"_
M#]:L;["1-M 6%T@Z>(7JSNVX%+QWZTP*.]7:25;= C=>L!QGU_]=9[F<=?#X
M5O,4WLAVMM3UMO6-U'F*,.$(.RIT[#(EBM]8M.IY0JTO$9CAZ=<<)\]\BTM$
M24QUL/&0:P8\%'KYJ@ YE8B:D/40>-E5?&4IK!<P]#JVQ=TU',4;EFY8\V#5
MTNWRG9]!TQ9VRB^ RER\![&"7VK=+OEQW+X90$/[1O?556^*:P4AHZR/LQ"Q
MJ)Q.:^EQF$ZN!039$"4EP9MJU-;0Y*3O<M_,$3K8FCP8#8O]RC[]D<^HN37I
M(.GD];XR/((@CABMV)7?O@..3B. &L9^G%S)#HJ*0ME__RQ^28 (C%PL8A]>
M'FL>82,,-I\.!W\?$[2F+PV2$^>W+M>FIKPNQW\NASLR8;0Y<=9-]E&?7YJY
MT'?$X]S)JZ55D2ND5@@W VI5'K0+3! =LS\'9])"<;0J, [JKTP(-C#U1(ZM
MSVWY.ASAMTLM5L58XI:A\(-T3NLZM*3,WDA/MCB6;.VIT*@O@K;7Y>W,_,S1
M8ZOR^?HAV85W3!*VVC[\-[@SM(U-=+N-#<E#^KJ[[I3UHR6ED-*XFZ<]SL[%
MS=4]5#33<S!I.U-^/]*1[W*FL\,51^NG]@)UKKCX XN6+_Q8[\X*7)!1/98M
M;@4KV9>,7J3J?>?RE'-P=L86"G&>'^"RH&*\EZ:^__1=0B? S1:+<#$0[YYL
M-JK'I,?+M]WZKNG):+E>_QCV:-&E^;$[2/*CJ4R/<;?":;SX(JY]PKW@J2%K
MR#22&;.YX6,&A?>$B([^0)R;@58?0D8?U"D\<PG@<TQ<EK74WCK3\=&(X76X
M0MF#JIPBPB"D,N*'(4AS:9>[(K5L&F?5*A@<7.IB$,Q\X*@IQL['QO"2A]6%
ME=[ZNNZB'?_V'8'VDZ0?^QA$(EZU !IEI7X#RQ9:2P1(9@4FLX.F-5U8)O24
M%5^V>XE[RS0:[L.#5I=()PD7\#='V[EP?)[,KD)!F1<?Q$W.#I#.6X_(OO/'
M:!2$VJ?I,;!Y&9-5?RRE 9'A1H\-W11Y*,)'NB!L\2K*Z&[TB6RW4EN*5J%"
M26'@GM8%2BGAE-%9J)7)%9*T2ZN,O3>RVH>PLB@)&X80KCFHV['>CP5-PXQ!
M(G#SRQVP[-;4I'>_?.LG5E3;V62IE7D:40?:@JCSXB$?&WYVIMZ;:K6B.XR3
MAMD40LMNM]>,92!'>Z.?OY_M]!AON5[(![3H\<[O+%Q\<\9S-@#-6HC9[4:2
MC,L1 48WB/Q.&YI=KFG? *QGH&_DYEN?'9@A[N5^V87]6E(:4_@,<"ZKLEO5
M=KS?AFHI\RH668*^YL/2VQHBW%I7'W\[T7VGZ&.HA1:S=]>B<!I&BO:^4FJ+
M$E+E,][X'61:#P5FMH"ZW:Y[/7!A0BZW>&:AS^AYOYR&;L'2>[]+GSAH(_R_
M#F: *0CLE5V55"-O!TK:ZTI=.2,GJTI=)2G#/*0]'%P<?6,8^9)\Z$N:XHJ!
MFO-5 ';D#!Z"BU@^";J!LU 9=T:J8.I6=\]O3AY0'?A7)0E-6GA>H@VJ(ZD*
M!8YNI&M^M=<(^@0ZR,#LM* W#<0DN2PCM";DXW- W]HELMG)TXM=%0CWTY!\
M0K+V<FR4 M T16<S\?J[ 0:HG"@X)A%FANU/@->VCQ(!*OF*3/<#,+_G3/N'
MFH2Y0^YC/"%36^%PA,=@R6:Z7P\#ZCV+%7S2SDKX& UIF5QRQ/CE;R(=NO5X
MPPU,M/V=[^A9OIU.N5W&&5@@.D\RK7-LX'(15_>#VZ++6A2SE>HRFU;VULIU
M<G)4J(0L_L+K7OK7(QQ\UQW8&+2:;@79-B.B$"P7<"\P/Z4Y=-YL<I(G^5"V
M5G-VS<5Z2G(*IBD_UW5,=55JH!$:(#^W8BV[1" ]B=0)]QN2U((9YM>FU7/6
M9TPI6+/KNRUH2=O-K2W.G^1FK**X7+Y3&C]H?7AG+GI4G0[&B@"U<^(LNJ1]
MY>4__XBW$EF0LS9KI.^J\IQ)FVOQ\%]9OCSP!@3&F0KWVL3RD&&B>[G@7.]\
MH)$/]Y.7,C.5[XVBQJ7.*#X3LO!O.=;H..YY>R?JP4=;V5K_NR&CV9Q1-*\@
M_<;BGLLBK>>FXR0RO_'(F5/LJD^L&@\%;Y'N/?X>PGV2A3=&)0CK8QQSL. M
M&YH?0Q]6Z\:V?A1%F">.*3+JV,H+-G4\N7Q/0K+G+6_-1UK88&YIR)#2I[7X
MBJ)Z[*>VRB=KV+:B1")0;7/]N[3:#--5:U*_@]"W%!=K -YS[Y;7'.X\);&=
M.N@;]9/4-ZQYCP$G2 ^7E&PH2;V04)B\)D]S+.J@M[V\X$N-?Z]_(>5J\L.[
MZ;34B?D=-K7142%\KMF@\=IC;@ARMV>2L_ '50"S_L'=HOE^=S_:K_8/=:L'
M:A\BB^RXI_L>M?(?7R("7>+!2S1).+V0+T2 LC).?I'1_9A\I [N(KF^Y[/*
MG6TS%T($/K4,'9>U/"T''9A,JK"=*CH<1L&\W.TJH?Z>].)6B\Y1JUR95B9X
MI!Y[C"6O'M\#=CW%ZJQW$!DNU]![&/5M9>G$5NCL3KIGN16.9Q/U)3WN82VE
M[_KJA'6@IY1=A]GAI>24RU,>>Q$<'[Z6@DX)3SUY?B[.Z7;J50QK#5O<#T_6
M]7;N+WC5LKH(0T_N[QU#%YP];PH,G$?Q\]VMUWBK=8^LM#!G2Z'>!K38]6W9
MQ$&-K!ICEE6+>!'9-I_.XQN[!L,.K 9ZGM,V?;3X_=&)XH%HIAYF,6[KG8K>
MF_7#C+ZR/#?_1^OM+*P0ZTR_(DN)3KN:Q#5)VD(V[Z/<;KF$5>X.$0H'#&*Y
MM_SPJ7SE.3>EJ+) B>;5)KKL?'C1' 0"D8SO;A^">5?9QHKZ)4^PF:T(DSTR
M]SJV= 9/SSKFVZ&D65W1R]W=O0&3]?[U7<'"-VR15I\&]1XUR8CI#M"JV?=H
M$X&6#YT?L3I;T: X&%?Y^ABNU$U\6[.W(5LHZ5Y-[:4A=^Y9%3:3DEB?[W,&
M7FPOV>GM00UB)(8)B"K""^S=?@9<:0?TSMSM8 9?CGRLSI/[4ZAP]@4DU;LQ
M/7Z+P&=#(@.,VAUOG(>'KZK&FS9XQF2#:C.[D1(3,'4RO)?5G!ODO'_U#<Q[
MVA:M"2:=NN>)):]]^5KYEW1Z$NRZ$6<\VL7Q.KAX-)@)TB^4ZR:4*1_U.ID\
M_D[:)$A0LIPO^2U<2HYZC$52=,FK8?V$1B>B^R=/3N&<W=:D G9.JUX$S66D
MD90B?\^:XKJQT6?@<J5 S4F&N^E!0"/./*#BTT6WEGB<?'S0 Z[.1[/QBYT7
MGM:0?KUAM_1:,7WN,G ^IQ<TNVR$&8E<2]7$"-6PQ=<N,CDW2Y6CVNZ;G^0A
M:8Z6[[VP5AX1Q$\XZBX(.9A#GXGH*?RDB%%W%@?3X#;U,(0RE#J3V;3KXQX(
M64.LE.0V>AQ)T+U90AWUVE*7D@PVC7)NL/<\,DO4Z0%7$VK0V\(]A[,C3[<<
ML9-UI<X9*:[US0+)+I/Y^HUZV[D6LK[#@V;ZK9E/4R]=*#8F9;IW$F]Q!]<F
MG0B*J;W7Z,D"@;ZQ4HQBV???>\K[SAZAR)50,9WXX0MS'])<Z&JD)6DI3A4K
MWI,M=O)JOY)E(R-IMNXX$*^=;!W(\';4K1C9[:$@%JEL%R6_XM,@+) "\T1Y
M]I?KF-?@Q /S8'[J3'A3M'Z6FCH#[B+<SC(XA:J<1[_IIK])U8CG00!)@^Y7
M[86G-)<K\PA@_.E,?<*V-%RX!-Y.:@BNMK(UW 95'P6I+03X>"5)!XZD'V0A
M@E9G<M(OLX\2AG<+<4XHR\?2,:;Z6,_0A]N^T_)$X/VNQ;%<)&]373:)V"I'
M. 5-ZY&WP"TJT0]G/X>,9_,T8YT.+"%"S;,J&?/9'/58G1<><G-91BP-$-[O
MK5N[B;JM?;&V,KS7A&ZL99[DP%WU*V-G/2/=5>ZB,A<H>D+X$5A:5C?.J^Y/
ME=P7GYO'S0\.SEGQJU5K70*T[1SS48CI;EU,96^)BK$M@94P J<?01M,\9RK
MR[%F&H3H1!S?T;;E95+6;7G 6#P;?IO<U5WXP!P+>C+7'6!]'CN9Z52"\X1,
M[?HV>;:J'5X\B3#.JA"LR[[D'Z5G]R+,_$ORHS?L20*AOM8<)Z5RZIRN/-15
MGU6DT5:0W5X3V8UG.LPFR2>)PUP%]1E!$8)=H<5[O%ULMNSN)BIWU1@(7S+8
M>K<UNQY!<!8]!)Y:K.,+K[)U2%0#7:DFG)F<04:LUTL@9G.MY 3-]Y[6Z.7]
MER%TA(]P3/'^")FK.B:UO>;4BRY&R8/.N:?T7)^R<6D/WQR1.!\ION(^RT;A
M[]TXIX\9.7 XC4']/#&.ZC@]]5IUE)5S>K-:2.=7N'-P[@4;V9,'>_5'''/?
MUP*,$J^J#L:)O#GS#Q:0&!:,SU+L'CEF4M$G H6S+(_+_WL%I/];1%,^/KN^
M-[AYWIE&MJKC]A6![*X<,QYU#$R=OI6A F>[2CC6KYN4*'R?O6N0;->4>(4Y
M_^CA8*=9";^_C&QR1,15L&3()R)0^_;%LGI"85)/L&)/,DPG?._[+<Q">PW+
M^+J!@S@--++1^[-\;[S$F-3GLVEC3JL"#<9+GG,R</9U'MDO.D\D5M.OCGG4
MR;YQ)ES0_^2/U!5TGAVY/3[+OEK;^&$]S_[(TE- ^-464@YGF >=T\,,YXA;
MN<2BVFZ-WQL7&L^ZHQ\HV6E\V]QBQ3E#]Z6=H,!]2F'^A/J3E[[C)<$M=T]I
MGM]<F97,KNZ85*7?Y?SFT>T=3H74#\U1[#L"\'F-L^F,-T\'06#'N^/\5#01
M<(-O)Y'-;';K8Y#OT]4DQE1D4G&&O<D;DUJ>;\/5E3_1Z_#I,;Q."S>S$W;N
M?E MC%7<-BAQ:>=O_RP')^LNW4C&[:B36M!DV6V-Z@EDZ$VPKNK07[E^-O!A
MKN6RE.)Y;;\=(N"@RF0VCM>8'8EKU2N'IIJWC$O;]+*1#W(=N\@=P>:8&#O=
MSH.;D[.B<&8-+SOC@3?ZN80A'I[1?>7@6\L]:GR3?KIX<_#3KZT3P@V+7B'-
M@>^[8Y:T&-BGZT^C+CL78Q(1TE<8MFVK"FB^%>8U9W]HN:\!OS66-1<E7=]=
MD5EB.[$U^:U0G&WFF6J50HK8H!58U9:4]A&!(V11C1N7BJ93&!ONOHFHGY*4
MY_K$V=]-N!!_9W(>TC<6LRN'B3TP%XKER+>1N7551Z2'>E]2^, =,YQT.C'7
M4H/+% ] <74@MKG U.L!2.O@LD\Z/; >M1FISQ>[71T2S]EB3+<6"G',_0X/
MT*?!J6*DNV3%MMPB345Q_:32PX"S.PRJK5Z6"AWFMM_?I@Y2B-:6O@!*CA4)
MGW>Q>_VW&]VDS\W%NUDHER.YL3*N:&E5RY/L584HJFT/IB'E_)0+5SIL!S=:
MSU5AAZQP3EC99>98)Q_T"*Y,1?:-BY+J\-M)C$7;?N$[.#^+%^=1]>Y]MA2]
M3>L6S.92 B(4;^2'MB "+&X$>2SS[$,E)==L7H5L7P6OE@]\8,>&)PI60ZS/
M9%/Q5J[9;<>7<6X]UGR3=669V\92=9[TZTC!++Z,"_$^;X_4G;3(9:Z[KPAA
M](0EHZPODGS]6=3?YM1#$,%DIP;FCN3B&O2P> )7X[AO$M/E<2E'3H'#9(ZW
M"@_6ZAU25')C.>QO+RJFD>XM D3 &<R\"0F(5-%?-JQWA6S"Y"?PU^3\F[=8
M?[K/=@=1QPI$Z=Z/XOBP_$E&3#LS[(-M]P("E0F3/8UI^O&"-AY?$*?N3^QT
M.4,,?<_;:Y\YR3S)JN&QAE4*K_8%>*[YJT%6>4_B\$RG8_<)&>93!@T_UL_L
M-D4RQ8D6-1C6F%G=2GWQM/\,?K1:1-M]_M'QS\\4:="6@_=MN*PE&_KI;XI*
M)NEE.'A/-@.C:S8E5MFU7M%D:O:=4;7@;#?Y+=[L*_2BEN?M5\*V%VNEVDK6
MVT5P_*Q9Q0O36L70/2[EGKJL?(N7YUX5-\5=+? TP.:[/WR:]]J>.E=QZT7N
MAFGS3FXY%-'[F%!689 W4FQC8^!<*?XM(,G/V9BO7G>9 RZ9)F?LP-'QK#;A
M&\\5G.=;V-4)&&]0\4@ ;3O;9+I5C86IL;FP1>!VUT#3K;L.0Z^EQI^U+E\(
MA?:'PET13-#)W2YWX>XY.O5;V.B#\O8P8;R @<3>PG3!NSMH]6JRJ"LJL?X?
MJG6O4IN3"- H+M9KO[!;@N(AOE0Y.O68AR$27R:LBG,,4UQ@F4%\A1HUK54+
MN?Z^]Q0^WKJV7(=IV%I#55+V8XXD=NO,*<*EZFC:E$?2^%?;T!^K8ZO8YX'&
MX!;_99K7WU_6[LY$=\S"(PD7<$%;4P&<I@F5'M)U[ Z-G6%O;5>5_6^_%3"'
MZ-VC?1%H&?$!(!WZL3A7VO6]BW"IB? )@RQ[!_4Y5G#)Z>81Y:R/YZY;><NK
MVHOW[WQC9BXH"^*MY\M/0"7.^(%G^?L((I,A9/,XU\5N\4)H>J_BSUOO?1&,
MFJ7F5MUTY>,E#<V),PVY]*^\K\M0Q-HZ4&]M;K#"SWCDCNZ+!R'B>-0GZMQ*
M) NB(9EWPD6W\!$O)T5X&Q(G2@0;8B_ Y10$D"P::RZ+U82((KB=%8A^<QP:
M88C5Q[5;!1+ZI"IWK6?*[9GXYF*N>WIT\?''R3XQH05+7;TL34&81"IB/TV%
MH<;5V%Q<3F_<MK>Y/GFJBW$SK+)V F[J<PHSEV+9E=DS>)4O37/SS?<I*4UM
M8PL@.)M.MLEFS^@?"W=[K+G4!#/&>PEB\5H-X1>1-C.Y67FIVTRUX5K&E*4F
M,A\'GH$JH-('/IBI,$<<7##RH$P6*C1E5#O>/BYQ4U"_3_OYIY@^-*V=QT+C
MP+ ;>?^!_F>\ZAN<8W\WCS36YDD='8UNZK4DR)A3K6*Z@K3P2]O,X?H4/DW\
MX"9G,Z/_^_D98+GUVK&;5?VKBDTD(T9%Z3"RUH;\&_)R2_N$7_Z#1P\]TE#X
MQB76O:A7)O//"K_H";!9TBU4=L%CU2YB [9)L'<U)U)Z<.IZ=6-.8]<#N(KB
MM^E;7A<]*]@%:CR2ZUE( L@%7-QR:J0C\=><EMTLLO2M1-&+-!90[9]ZTD^^
M"Q90/2KA&Q)KJ5VQTH7HF1_2%SQ=4Y6.)#!]0S)@#VK0970ZMYE<?P9GYP06
M?7B@,.P>(7&7")1]/QO&7M*]Q8_SEKW*$UQ.&$^'F,;Y7>'#I"Q 2;6Q\I5/
MZFP8X"XL+5$_?6A=L>9' GIG/OEY,C6]LF1]]NXAO4?9L9AKB#!6NPYK9X&]
M[==FR&KM<KN?+:9B=]LV;J$^)J\^Y3(Z[![+T?+ML91>;)B50OFQ'"[ %%LX
M7"=47JY58+UQ0."=4!%E?@]W6'2]+49944#.=/'^YXZOC,8)&6<E$M(79J 4
MJ.%,S*HZO5"FZL2RQ:1'W5!2G5+]P Z[;*F[<=>9RQ3"$QG 4=G2<&X9[NY!
M7/-8.S\THN]G0.Q.#4L*TK7<[\VFM^[A'DN<8."%.IZ;#"JZ=V9M)>>!Y6&Z
MW%S<)EHX#!]PK&>-R^])QB4>=B//C=6U*1I4U3G+'5/LU>E<ND:CS"KQP&#L
MT@(O:>3MF*RI,(1]$@C'A=:JC.6=VB_7U!GK"*;I.G2GJAISZ!W<34B[)!#&
MN.,;:^_/\*Z"'![P]>=9=2HY06Q1@HK>I:;6G-YF]^S4$O/A#7=\_ -O^@O4
M[*QLWN1#YU%>3\^'PLI*\!I8G8Z<,[BCVA$&MXR3*;R8FPV;EE^EC4&Q'&?E
M+CK-5Z8FT(WW4E.D%^/+Q-[;9F 7')A[+5Q-!G8=YRN?Y6,UZMLFKC4IZ2&_
M?2-8&WVE0FM>MC)'N67;SC'E[$*=^<HL<+G<AHHPA&3%'$:W:N6[9J35+7,9
M>&I&=S,I(%0,!91NZHGI.'%I,MN+,'VXF=!L(D'3PG)'23T23K%%8%,H]_7;
M=NI]/%ERX-L\Z7<85I'-SK^W%'U(WQ-&S\:_,@_1<92 A"IOB.2%4O^31*6L
M![[GNPA2W[J)E2:D.QMOU'VUYB<"J6]Q@43 UBD6_J-%H]+X;^;B0%Z<R'^%
MD'8@'FX+]5OC@I;:9.]6-TSXSBV"H8ZS&\,[@FD<Z. [9- %=OK!05TQ;4H!
MSA68DWK4*5]4CS=5B@Z'*3ODX[Q"P)M(@:E6V=RK:?YC]:\/RMTOQP*)5RP-
MO-A>-4B<B1KNG?L![C&,:@?CRE"X'S:,D'DKL_X LA\V]NV-U1GB,?:,FF(&
MI 4Q'S;>4;]?H?Z$2>I4I\")&5A;J*IM&C5_>6.AOSE"[QH Z?UXL-E"+S>5
M,DC01:X-+M1(]7/8ZE*,9$AO^RV7"W>V"T[Z[=(JO$]KYXR'U"*2NIH;HA_R
MM@7F1V\QZH> LF7E/(3CN9(%U"!+3E6X,FP0VJGCU,-_TT.+JBA6N*GQ8;G?
MQA:ZSH*B]T7S&_0NI 4BW:5$';,=$]P+9_DR#Z.N?XCAEPW(YCIY1>#"0;J-
MJ^LQWQ<AKH]MUU.[RUT5(1D5V8JVP]*U0\*I%!_A?JP3*.B1*6WT@1W.CS6^
M^%NUB^(APK.QKCG3"#$EO5,GF#:=^G!T45_9LO<K8^]9;Q%-@4BOMFJ2KQF>
MVPQ8Z1[A#@AW??*#-YOM%[!J1:B#+ZU:J#;M09KX('<UBP^5;]YGFQ5I>;'?
MY6HZ>C&A!KCV8!:W6; TO8]!3PJQ<FH<A'YL(2)&+J?ZFX(IP[R%Y3?,O$?C
M]X*LY_VB=>GT1X%7UU6F.H77P2 8&48Q<@6#;PYYNNGS9D,14O=BH7?_4V]G
M:U.<KE.VBWUR-EHGT?3..-L%AJ?NEJQP$AC5 [LWYIVY@?ZSM%/?OPT<-(T\
M.\PS\O6V'_)D8\3,T+1\G0L+!640Z/"^6*<.1"@1H%-'2=2/UBV>T\.4&M)_
M>[;^7I]LH?E;1G!M NV>2HK.I331>[$L=I2#IF[AG.65VX%8+AV<'WH[Z#9F
M_G%!1D#D,I:L(H_ ,"DGJ<25HR27:NC?MKJT_<)<**9BJ>*F6U@.# <_5L K
MX>Q>?):C8I3>0FSIHB;\N,HU1"1"K"9'!3]62Q@U&4L5,^L:Z^]<X,RW.Q;%
M7QS_(6FGPTGV92&JK$@G?S@CJB;8'SO=-Y<R29'F[P;5O'_TZ+G-"^B1-J#4
MU*JH4(>97-/%)12[S!;E>/)M3$'NW?UFDJ+96$5BT),86T-]]#R*I";2/7_%
MP.=:[7@(&]X0"PZ3TVT5Q"3U02JC?(-E]<=1%N)NFR[RE.Y^W#>4?8T9>OW(
MNC3>G7EE%ZH?GL %K@[AQ:M_;A>#2AMC<F*W!1"?Y<U:XX?,*M[6R_0W7K*1
M$38%ELZ0TCZ->*9;X3^U!'YR 7/0EFM%%V0YYM?BY1[DA@8Q;3PN?<[1F;1M
MRLANQI2%W;ZO\?KKO5 0.P8>U<ZS7D\$>%0DT6WJ^E4X+128&8*T^"9+PO/B
M867AC)4^2<--_MZ#V.QKI.*B*=<B)5@SEQ#1(=28ADY5-V-</LJY=H1$#ZU?
M[MF-I/ARP<7V?7W6'7$WS2(1D;$AWA3[VNG5*QX:I;%L21:(TYD"WK"FJ\.T
M]>649LDLFEH%.QK2;XC"?H:GF*#U>QO9&)M3+EIK]_7T*0A-[QO.)'4T3V85
MSFR T"VCA8OU178^7LM6+COE%9S\5+Z-BB&NA*WJ2+I:3QA@50TLSL [,T;"
MU$#3WYH7,M?W!H*#@YQR6[L\M]Q$*PK3QCHN+QW1JWBA](S%C/6,R=MLJV#\
M*"[P6>>2PF_C&^D*@UMH QN3YHFBH?.O/_D(I#"LT]SW/U-?_%_F?/_FA,M>
M)0,1&!B'J1"!*MD>Q$^K7-/2J1?0),*M3-3:26RV(!$8VZ9N\>2!>A"!7B1S
M^^B/$88-'J:6YKWQ8YL;NI"-LXRBS[16\_-J+MC3WGNQV.A-!GB.VIS!J4W=
MPYIVVLPT=&ZBYFRXOD$*?K9]W4FH7'Q9>WSDCE]]8J,[^G&$74:E!582H,]\
MO9)KJFITK@O!5(L(1=*H,<3?PFA"HZVKO\# Q88GN0[<.SETZ.!T&7M#CU0J
M^UA=2E81+\Z']ZZ"JITK1^"TWQ06F5O!J 6*/O_%V5F%,,QR3[J2+B+]T\5/
MY/D'NE*C(VHP$ZQ6]<-=0_FX9V:INS;,> <T%>)^2PZ#OI=J98P\B *B%^C#
MG&U9)8>YWL!( ?9[KL<[?_$:!SM?J%IB7KL(]FLIC!<#W[Z&2B*=T4$ET4U_
M@]P\2&O68\5,#_AY?%YH%6ND;WC![,W8J#P ;^U-JL"38G8R,41@6;IWEQSG
MIE__&<]_7\YMSD"FDU7<+2BVO$"OQZN2JO$:S7OV(=E+1Z]B@<-2\0QL?[R\
M(=7LG'XA3M82^SKUBFF$9D:7XA.2K&&/G?MW0(;/JPXJKV!RMKG*H<M=S8JQ
M<H;A<'II7RO;06Z-OK5MR-D07\:^:NUCFWNT3284M"0<*Z17>::T DWQ4H9L
M\%$J7!@1"$/R$(&OY6!,DXH5$;@NC*8@4$"#B$!:+<E&K>F+OY00Y_Q;"3$1
MH$GM7?RA$7(!OA00C3ARN\I3]AOQ-^)OQ-^(OQ%_(_Y&_(WXCT$TR<&.$0$"
MXRZML])A-X@=JD]@%)_Q/9;4O)>CF[8XHJ\?GY<HZ;GZS%'<_)$_PS,2?OF-
M6I(_RXI4_DE2!/B3K(C;G_'EJSS!BAWJI -+5EQ=E[XILCZ6BK_4.$Z76.CG
M'F G*IT>M7/%!#H=:W_'Y.J-#X/>!7'Z(Z'69"T8J4@4V6A!]:BOJ$FP[+$2
M875X9^S^>8[\YBBMUS?0>HH#JQZI'U,#W;=S-/)"549ZX#6>W3DL4,^KGSU;
M+_./^2JSC6U);DE[/#PP5Q+3<]VFC1GKV(CAX:#AW^9ZCF[^%-3Q&!PGN5;W
MY6'&X:W&\;=C3N/VV895!NY2"^L'G:UO+U\E?2'QYOT=THNJ9,PD7=" )7AX
MJS1*,J#;I%D9Z<*)>5#:7X:<=Y59C(J\+RXW):,G$'H]EIVV1ZR8%#")[AZ)
M1)['F1<A9Z'^8ZL,P9>;FAL1$U+2.QX"# 4WQ@R]!%+:IY<3F&7I2^/(@5X_
MW]LDUL;'PO"!=WBN7T&$]FG$P.YVVJ4(^]TC^9P(^(&0\^)/33K@<3FST56R
M_X'"8XQ-)=P0[J@\/K\#W^>9_&5\NPQ\X#J.A0C898T0\F<__5WWW9\$:G\6
MIWTFT6*^_6_R>Q#^;PR"^_+(V6F8%J;P,-K/?)\F6.%XR"*B</&3@W+>APH[
M)HTAOK+(Z3DSQG=#V<ZD^@:3M2=N!E::AHBZ]O?N<Q[E;\WYE/5,ND7YPRE5
M,-?>N>NCX1&^-N2=Z&W-WF;NZ$@IQBN\4QY^(G95R?;]:4/*%S6X^,_R^/3"
M4I? C'1<!_(X*Y316UR8KZJ_^%SPG>/N#,']H]KW<2ZO4&>&.3@57K]$G7UR
M1O'5EV[M-S5+YZK.E6$6#R2_LYK]:,QK#"T_J:U'5>:/5K *7>.K( +IVUSG
M'<S.YUY8#55KPH)Z=BF@.@9C=70!O1D\\0_*E'2*%EPYGU_4@@XK\G4-=^B:
M>9])3;9BZ>TQ>:^GLB=PL:\0J<<N5AJ6HJ<*<&]^/XW[IW,HUK^AA:J)P!-G
MF #VP=CD$A'(CV<JKK@9U&XCO64[7H0AP<OO@-ERS),(5%B8GTFRGPU.PUV[
MPD&"RZ4AQIIB]U!E:VU1CF37F@T7@?(\#PW>7SP'3=?%DL=R*;47%B[V^CPL
M)+?D,(H+SZ]4N8L'+U?2X35'^RI1-O0N(4)C3Q/HVT=W;5LB'B][[R;$K=C;
M.SV=&@!S9BU_1KC9%=32Y)[>'\Y=*W.,_ /5O=/NK?#^])D:0M]';-R!S1,U
M&[R<8M_(UB[_,=@C@@CP-,X<(*H4\,L)BT[';'B*H>TXX&!CKW)&F6#@M+1X
M$INA2'C6;16=* ]B=SFH_[1T0J,YY6'^(5O5!Y)Y4W?\/+-SN93^ZP,QQ-VQ
M5J8#^RG"Q>YC!;Q(TDV,=-C.CR^8M)3Z!K80N=9P%UM6KX<!";[IE+V/;D0_
MHKH@:R= ND$M/HA \>,63U?7[ZC319(M?1'_-I_ J)Y !'X8JH&) "HPF @,
MN@+[D-^JOU5_J_Y6_:WZ6_6WZF_5_Y&J:G_@^+!-]+8%6O*PMS(,BVOI:F?[
M_&,4/?0V<5D+*SE<**M/!"@)E4\N#13-A;;H<\\-G"6I74G^8?Q/B,_(0Y)0
M)]+=S=>53%Z\G?F682EFHLQUF5&$GE&/.NY,J)YPV/SDK4),=V?S5,1]3&(N
M2O(<$>A*^W;^T;JITD,9L[ZJY2'CL.=O:,)"*=C1S:XBI*^PH&XP!;3%8*SV
M)*#K,4_=@X)FO:+9#<Z'LKV.'Q3R-2H*M.\]H@X+@S2$G!_SW!><\*AM4<ZZ
MYNY09=%4/EK(NB<C]RR:7\WBY;)$4Z=(02*9\^A5=AXV7##*DQ07_$/Z'-1-
M%T.(Y5=6RRR<UG)_V-MW_F6R1DIWY?EQ/'C)DPZO,MJ7C+(!?0OA&'N2(%(U
MNI57&Q%DY_,P06-ER7[YM<E79L#T1<C XIZ;.CD1V+HYBO@1Q?FK?_X]0_Z5
MZ/E_!*__#>4LV]3D3_?74Z9W!=MJQ:SU["\;&TVD6E)T+<Y2=! !#JE]?1N:
M3:I KZ);G_6YZ-[-P1.N'*4C6XL(U&S+JN+=ZC7;JSD!I4BSC=FZKFMO9[_M
MUEN44"!-=K^&>B./=4Q8]FRVUHYI\0^:,C9[3'Y^6>M:@(R [8)B%NRSWI^;
MI.YXTKGRK#O\HANR:TGD7M=@V^/7B0<VD[M?JWY,J]2 +,@D;O%5\K?E!]?B
M;8;L]C7B<)4$UH!M*XSB5ZQ3N.]NW*R$>M#MSXE2YCIO$C3/*=>"$_S:28E
M^%.8)%9PZB @EKQD2=7*8BAET;Q.2!!N>$DVJ:S45*)Z]F"UR*4"&X!7Q)\3
M_7HYV_JQZ+TDJ)IG-[SC9W;<!\Q(?*TZITM9,11N_GYRRZ*P+\<[M9\(!(OR
MRU=:V]V2^K@GR,;F(GXQ+TZ4D=E("_A;)-"TS_!().<,8LNGB0A,!)G_RMWA
M!HB (-.2Z4EB@/K/)+=_3I+OW^41 DVWLHB 4 W&D]#SB8L(Z#[X!7^2BEB9
M#*$C M.O\N'?:.5(-FK_1K/^;PA+_+(ANXLZ""]>"DVR:K'@%C8(JY 2]AA4
M)EF([0"\]0"_\E*</OIM4W'(/(([#V>'*GOU &>%T@_S0G.;+! L!NXEUU$N
M[7$P+0;M,9OZ,X'V8QL4G77,U8;PR \_'EW6BLOT\7_BE[J%^+35.@2OF8J0
M]YR=6^;N[[<Y/Z-BS33N<!&JK]6H_"S0O:? EY=2( >=JOJ,^CBNV%GI7 XJ
MF+5?=^PA^OVXQ .+(#<S4RIFUXNE%.]90M+$&?9C%\2UG-,=3CPD/"31&]9B
MGQ.3K=*/#K]3K\ ",4F=<&9)6!(+SD9_*IW+1'_(P>7NR<"E)OB2@*F5EK?V
MG8C5^)K+N5?NILMQYR3OL<4BEEZ'L%=-9)KBG)9!]'C%2;:7LV/?UB*#0L]]
M?1XB RZT#RXZ:,5Q$.JYP<NLD6Q8;:"5"A?HS8H7K*P3J31P-"YH<BLT@@=:
MG1P3A*O.S[:F2_&*E1T/[NZ.$H0_M#.=3J<DZ!4_EC$U/IR3-<[S7<79JL79
MUE%ACT=E(FN3ZGWM*1CU7C E[&;-L6DD3/^M&Y:D*3)A3!=+!-I#=S2W.HP7
M67#"W4BE\5LY:%60X=3#1+A7\6S!NNP\.07%O(^-(G2-0#6 &;=L)8QCLB;+
M,43 3'N1^:?!N(HNLN5\&OBZ7Q&,SB,QDPATI*\3@4N+DCT>A7I$8,GH1/ H
MQ\3(AB6)A#"90QJ(V8W[@8A_+*#N/V)VN5E,:>7#X%'_ ]E@58_3RS!&E'A!
M.$\J-@"%B(&1%J<V;%.1ZI/F[)(]>LIVLO CV^K.8]1*J;1PY?Q6SU[&%Q9,
M=8+QR50EX<P6$2#=>BP^0CB/#\$%8!WEB,"3N[T_K<N5G\9K90XUD2+9YB[@
M3=K.M,Z,9RD.R3NM!K*(#C]O<M4J6GMCI,5"_N#_Q0E3O(#9$X&46(PXH5\Y
MYT2G+N/74O(T9\](C0P^O>9#!(H/:OZ>)9GB#[4M;1H;&UQ<YA4>CHE()+.+
M8(8)=<P;^QJF#H VQ6T(_]<NPVKQ:2O+&[PF9KLO AW,,V(]*F4MG'-K@M?\
MS<M^OL',T<;[W/1+X>>ND(=>$44X>Y)(/_D!8IC=.%0:?E59&W&#4^A%8/$\
M,F:(BD<Y")KMF.#__8)!A/<*?BB3;9%'!>2P9$#31VJ60@0TIAQTY>K'):0\
M/3P%'?SW\NNC%%\5T)PO?":TLE<PSV9GMP:.4J_5CL<('^CAS-U\BM?K0X2P
MX#E).6?\M>+^![8<4H(N'E+"WF<T&:MKW(>J'*Z3O38>\L1IAC!]RZD9;G-?
M+A>WP9"GEKGQW\7F67:>O#Z<2CN\>0@2NQ3'$I2>!2Q$NAC+&-X&^6.%M[DQ
MNUWM'*>W7XQGJ^:J\\_]U U_-A-61<5P_<NC/!9%]'VK(OSF_-(284:*%:N6
M<3MU20PNV6#,_D%+\>(UIWRSV8$@GV#Q,.;;?&R!-+ZSS$PYUVQ(<4YF=:>^
M1QWDEBW3I'0KJ1*FB.5N3_%$70H<-RP)KJ"1NR/CE(;4K;^6L/N5GOD%7UL#
MNB\]V.Z843&LPLDBB<L"QX-T^0$=/ 7G?N>/WBH =KQ2WV^?==3B-K,GG6Z5
MQ[9T9HMCLMO0^JH0?2OA:^=F:S8F%3E])ZG?2WQ]&X6^O)( 2]<C<0#RR3DH
MY.&HM5[P.=B=\5T/O'* S\6JUQ96%HO?#EG9%/;8QXS-+S0F7KGKZZV]87[5
MP8__PFK['>S^"IQ-!7Q\&YK?R1:/3J);_ 8Q:"N<?):W*CXC>=^E8HSQ%6..
ME-DRKT_4G9Q 79XV#*@'XMD#>HI@:W5 E=^9L\0DX$;?E<LK4YB[5TCQUB>O
M7?K0JC:J(M+C1/NN:-4$($66_74BWY_G\GML5*[;PW;0E*\J]5?+5RM3<N9U
M<LF7.K3B=J9S1[P__>!VZU1W-*!8IEVL\>R*E1OAAO*,&WA2N4BZ>08LM0RL
MQO$[L?8$LIE<W6(#WE\_&ZY1\0A0>Y/76D9@&/G%LV^W_^+9%*<\>RA#'77^
M%QO7HOG%QND#%O%-;T#&OU5_J_Y6_:WZ6_6WZG]:=6]Q5GR9HE=ZIA^%SQ;X
M@@]<HM/>T+O.JG0SA+HMSF+ 4%"3^T%],8?$W"T*6UT*B.\:Q/4URYQ"OC8T
M+KG0P-KPNLE)K=H5-P;+;PBR=NZ=%EP8NN-"AJ[ [$/)G"N"T?..M_O5N\(R
MGY94VIUDJY&=DMZ:W6X#]6Y.VX(I*).K4JBE_-<!TJ"<JVH;B8,4L-3OE5M#
MQW)XT\\[4@0Q5S41S)?H1)@I>%;J;D\V9]/$CCN_OV2=M?*Q%X?#S//I&Y'&
M'SI9?K#A^7-. \?U7)@Z$>@Z=TP$TN77T1L:SUD9XUM-=H\*"?H.A]GU2K4B
MG?<?[6 3J^&?I/<LI%O_->/UUYV5_V?]9$C[MRL#_RS5PG?.S? 8"8&J+Q*2
M?N*BEX/</IB8+6Z\HY1?/0TF$F&>1" O\I0L$@%*Y5V"Y>BO7=-]1."GB WH
M]'Q$.Q'X^DEN]@N=0M;H&A%@@"]E$P$*O/^NCUV!)53]CK#W C0$+JAY3F?G
MI=Q]I^/2(F0C".=$!&8MEI(^83;13]6NC/$=-ZO'D@N(S[!]D@)XR@3@-PZ)
M $Y'39$(C&K@X*=Q"/?I/Z2<3W_Q68:?,$M'GYZ^M@C?6VT3<;P<4V'>#CU(
M0:R5;(Y_JC)*$M09X1FS',).[3B%6Q"0UI=P-H_2X)PA]!N$\USA]>7Y)4&.
M LM?395UB8"_X\_'QT7=\-ENE$ZOIY@J3=]C:%MJV(/B*[6-(X<:^@U>1""
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
M1X%_TOQB&]T):##AUE]("$=1E_H/ME]T/YJK1QV?I8.7-7P"7Y?^Q4'.*<;
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
M#Z1A@6 !/^BHW1$3\EBU9?HLCJ2^O7 A?K.GJ2!$E(]L@/_Q!'+(H:Q*YIV
MH [_7'PH26=.6@Q=TIR\X7OA!R1Z.VZICG=AEUJRKH:P#^Q@@%X,F+]+K*^%
MCVR8^V+..$P0H<[ QZUM^@ERSU2D1C/J(O9INE:?_JC9416F$X@1=/#U$W.!
M@W4Q9$&B9!,&1!7F#'[?,JO[U!61?O5T!?(Q[IN__<NAM%[+ =*/ES=\)66]
MRSI65$B""5*\8'LCU*K=1^LPP/R6+&_^,^SVCQO:Q[U;N 2M?*#7R@-U=%Q5
MH;F6F4EI%@:QT8\G,7+UT[ACSN)K-A@9?IP*[UIT8X!>,^8859)XI;[N)"DQ
M;,S31;9Y-S,KWW&WM"5R<WK+.V;48J4B1#/.B9:'Z> HEVMF/2<'MR)/X N"
M4!)FH\,^38U5DN%+R]/K'\KW5AW$PHA:FW=-GCXZ*G^IH>!L'P-D V4FPQHN
MLX12Q;*=10]5]#ZL2YBP^*;Y%I9?_C2O7;=N[*-;^ZG;^O[?+9I*G^E_8TDA
MPUI'&*#E0_B)X=$;@YNU"$TX+UF) 6HV+YU]AE9/5&N9/C+<)'ATM$K%8"CV
MI@V+HY3H-2;>,0>P<(VF\A(/N,6QK(-0@626J.@3"!FJCFI+7V=[,F+ES=U_
ML!IRC-Z=?+ 4W\,Z;RZ1D^LC2#W[<-<U[I./EXXI@5WYJ<9I["HA7E#02%[7
MH.&CENF!AU5ZD&!SD>@@6"-W+I88+!-2!X9S<H.'-;]H"%YYOE/]TOX^;?:"
MPM/A!_O60B-4#0F0(*5Q::)6/"'ZZ +?2&8@GOWU@*>:$6%KJST :A*G7YL@
M%6:5>JKWX]?P]'.ZL<\\K$D4=;BU8YT4N7@RS)-#[TX?]2Q!0'JCXYWUEO-H
M?'EE?YY,)]1=H29V*=;7S2J,S<3CZ5G%GF'CI@0Z-TDF+,>9?HHDW5WI:']O
M=SS;W55V^43Q3FXL?XC -]^C?/%W8]Y4'YW9A;D3>_#QF"8UB$F4-/3V4*F!
M-6U3&GIWH 93:OU37OS^6XWC[D\+<<></H7O;ZVQ%W]J2<(U2\OB-_-*6[.=
M\ZVTW685K;BN8@?>'E%8STB7+^+R HDF%1R@)4$<(.R_L,6(QDCUJ9NDYD2^
MU*-]]V*659GR?S9VEKF?/7O>2S]61IOSI4D(J_@1YX7?SMY>9:$JE@>A?W'O
M[8YQ]+Q [QR,)CLB]C;&Q @L=&',WL88AU_>WBE/8M_XWNZ8=C,755E];W=,
M"(+/J 'FT=7H%V"R*U*# ?H*S*W;+/'H)CT?;?HS\!$(\2<YE %ZY0"PKP1B
M-&V_^@DTOG)O7^S$T.?>JZ(F0*72>/#N >3>YI@' 4R_ED87LFB$;+#N;>"%
MS#5#J('6.7OS^B\]_]+S+SW_9^AYM^X422(>+R*T:#JX*>PBI5]JL&XU?K,0
M)[!Y_M;9]-$BH5NW.CQZ_D"=+I^FK7&RR:3*=^<A:XG>%=O(]/+2 55PS@^U
MUO&/"N[.0CRC"4SC-5FM\#)T1)V\S_.YAHEB;$C68/[K'6]1J;I0N[PODL*]
M\!FFWHSI2;QP^#SJ"*KQ\JV8? :HT89D 8LCV$?.WI>JI2@FW%9_K)2V+G$%
M(:QM*U!@KJ)R?TA=WI2^0,;L(.E38U%P*%N\?J-E[?LZR45JSA!<K%G5FZ*#
MM*!E%'SH1ZJE^^3@$YNN?!=?K/(.WC0P):S(7*/-O*MYAZ[(T+YM.51 9?Y&
M/X3J&9Q7BL"C7PA%O[BKU%7@!.%4O7:Z?QK9P/5#3@BCR125434T)-?ZJK6P
M-3SF$]OG--"^;_MNY>;8V*E0SNG%BB3"8=47FA\J9'/=OZ[>C;$;HD*]U_N_
MKA7\;G?P[R;?-)?J4@ULQ_[6U8J_&=UYP.$]U[G?+=_[N]$+3/;2/?QF>>W?
M!F>MZ=[Y\#^IZ1FFO_3\2\^_]/PW]-P9:IG@+Y$%(\W)X*SY!-$SI171+8G&
MQ8O6/ -//MV,YEI8N)JP,B+^L(/KE=R#?2?NZX(U87\E8'G*)M5.5T'UT9EH
MF(TR3/-NT3O-;[5UT?9A"!FU"TD[VI1;)@'K+<C^&:H/K=Q"QI:L0?R(P._4
MC7[2Q#3\Y*9/VX*G6OP4W8RSP<Z&:QK5-+[5:;\*9%V&@[]3WG7,.J37=>+#
M E@8XHIF]V$Q98""8 U*CZE:I)\]TQJ9CH*Q C-S,[Y'1#I99X[P-!PH,%]G
M@#CI;5C " [+UD,MX!+)%YGE_88UBU#F>7E?]Z88JIVN6;>*RL]I3S>?@H\H
M5GI7*A-Y7WH$@MV1379LOZ73MD_"VA1M#L=$BV>K&UBX6-UJW"1C*51,MR<A
MJU$H>SU<7Z.,?IT2NILNFZA#+5V74Q69?,>"7WF&^.B#T"GI?9*#WO0J<S^@
MOVT3E>M?V*;6Y=*KZ7LT+J[:VS[T["7ELU?* #I^ZN]YR.2_U,&3_Y(GY6S[
M3]= S^<#..#NN^[]S]K$MWC7LEI61ZOU^S?[)R>"DE6Q1ZDN4@)Q2V?Z[EX=
M!L5V=+[W_G$]:D7.2O'"@+O\3'K!CBSLVU+3?2F;TQU:RF6TQ)QAL*Y//TZ(
MI0G+]=,Y56)@6=% @E-T8>UJ1%ROMI?-L);NDM0TUQ'4 /8H ^2H9KW8!"Y>
M#7U8U&=8DX(5<B+MN+?$=-=?XR9]_>K(.GTJ!H;DI_"1<PBK+TZ0$I>Y"'=+
M*0-7EJG2-DJC>H9OE[R@B:(Y? I15I4%!4@(?EFV,5DM/R[-<6O$-,DIU9(O
MP?V\NU;=LZOU^12\FS]J#;T#.,IIK%C_;,,,X.MR[@".B7]1ML$/HTH]0@M!
MGB6N I^"TEJ5'U-OD+YWS1E\=A:,/3.CTB'N>FN6):U2NEX,<7/7.ERJ)^]%
MSHM$M;M6#)"%EVJNUKDR&>1FAO>.GPSFQ,=PJ;<S_[=R./W#TF!Q72'/9%#5
M*HAWO]=)#)LO6 OV9?)+X&YK5Y15)#T+5QGY9N?Z+OFJ6%A,VZM60^\@L5GH
M8>1I^L"0.B]5E1R!_VI#M,Y"$":X+<C:QK85@3>AZL./I&^N/5O.*SC-QB\E
M+,?J+G!QT[ZY($A=@%S)&0D.N_?=[K+:W%9P4)5KH6]F!\)]I@;EU.9\WJ5"
M/.I]7+T7SMBL:FAI:A+-[?,0IS%P<LB3W5EPIJ*LII*DGBWQ@3M!X?BG\LRY
M95&+-%X':E>0IS4S"(F?? &;&@I!V]%8""9OK<6^E:+W+9AW42]_N?NQNC:<
MG?5!Q:L+#3$/JBK<<*]LSU^R'$+CL2]2@8$4ZM8R!2_]J4L@UPFW?<(A>Y*2
M\><%8Y';CSZAC9Q_U+@0(0WH(R4<8*V!C22QPM[ON"P&R';"TK%HI/7!A1+#
M#A?QQ^==!,_TAHS4@Z[5MU)%#_6Z?. C#;OTM[ZMNMVO.J1T:N#Q@0<_RN._
M+8\5NUN>50'=9FFJ4_ZVA.)MFH(RD66AH3I$UT)\#U-;]O \Y<&+VJUBZ>#I
M7/Z<'H?P6(@IFT#<8%T8+>4)!7Z(/#0%"]S0DPI0:#3G"EONU^U?FC);SFW>
M-8GO)-T(W_]QIU^'<K5>OM33G&MI@KC>5,<Q5"/M_$%//2+_>L(0R>ER_-A2
MD<;Q!RII=[/BIR/%#"FE6H:",_M3G;.(X*8Q=GQ^A$3B>PM+#<3%YD2/#E]_
MM>6NYN[':WJJ*VOM.)"KESBSR?$SH'VJ[H0NXT:OLKYYU.$A57OQ;I/);[-?
M(O$@>X^4ZC?' OMGS@?D-$ >0B-$S_3O'87B2V" #JJZ?[9HP$M+G%G-DU4\
M'3)CVGU"_)I$9A3OTY],'\M8VP-CX+=_?YX&!,$_]JFFOX !P(IS[R*\-, U
M@]L(J[LGX0""NM(T02W]&RKBEXS _@K> TOUJUSHM<%HLF7JWMUZWCU8Q%2C
MQ@!UF/\-E/U5Y'_1(I4](_44F&_+WXT"Y=N;D;,GL5PK] $2*C#397&KZQ9K
M(0,4<.'S2SOI4_F6]\]6:UI._PD%/B?CE@.(-AIC6]$O=@^G^-&BII8ANV>4
MG$.&(),?@<HWWLPHU9VJ&12_K1/5HU=AA?LFR,TR]19FZ6;V&<-Q-J!S)<3J
M93;1,(X!*K_["_.W)[2E_O<3VG][/;O@GU_/'JJ?H[,9$U;)EET%+S#T(S6^
M3!I3ZM8>V'QENMJ5H?X$,-$8&@@S_)"TN2AQXFBQXV@9!AK?Y6W:1GKMLF)-
M*RW\19 _W!@JN[*37^6,D/";^U\O>;/]P4O>_UN-TKDM#-$0^@PFL*YJ[.W,
M %F5I*0!I*35V:E_:X7,XQ\M2V NFJ/[FUGA&* /-Z3")MW=QU_7S?JN=<CU
MC@=AB?QT;8-_?OB[[I\?_M;^O6ZC$MH7%/OX5 <Y^D,^>JYD%D)C91LIH:73
M>> V[>0D_"FH9H#3,->TI2F4P_I* ZVST4Q5'W7N,5S"Z#?SI/TV-*K\H1%T
M)BQN&.F"'WV[L>9I)KRCYF+NDZ7Y76[+RKIQ3DTUY35BVIG_EON8P,VW4R3-
MM)X_,Q#OF!Y^GWU -,CHNV"JR9]IY]\6QO[/]O[;8M<_IL3'F*/J9WU@>'"H
MW2#5(F_D5Y4?4VD6(M44W"1TN"22WO[<*4W0X%.+51'^T)W8(-[12_ _F'MK
M#%#81/EL(#'"2 @61A?QJ;XYF/ZRQ-3(ZE=_V1+RXS673_JDD*6; ?ORV6_3
MWJO+H0:WUQTFF$L<:_@GO\Q*802=,-7Q]8_ 9T.N'T<?]L=\.!^_! 8!B*.'
MB<I3$6U1!2.A(_5\^Q9WBU;M7L?J70^*$12G$>[N4L=R!G?SSLO61O@Q0.<F
M9G=1]I6;YP1D_<&R_CMB6%K-5C2A)[G&SIZBA1I0]C+V26FP/D/<;J1\F(T$
M-Z[/?_O9_B[!I*:ZW/OKG,?SM.='ZX+)VO=9ZL=8'5%':"E4CRRI?7-CI=NA
MZ965ZD4W/:VZ-BAI7W@WXGF[X()&)0%O8><A\2[K*]3AMK#.<P2QI8^OS^9]
M+-O91CT"N/[O/?5;2 (8?#Y3Q_];GO@?663Z0[:,-Y.<NHK[9M!_8JK \I"F
M1&C(-MJ9C+O:5[9)<<TZH,( U;V!,>>AAK%,)1P3CN0T?*77)H5W80S]*V^X
MP"C$Y,T#[!AQ'9,.(&UQC6S6E2[9/V7JSHL%Y+.A2[3TE2/DJD43SX4R<\VA
M=9_OX.Z*B%6RE'(C[LWHKU1^4D*U!U6*XR5KWDZG!0,D4O QK4%5]P4L:C\0
M<(Y9HC=R!&H,>+=B-I3_E&=?#Z6J6N" Z2'*0TNN<<P[2"EJFSL7[5$TC%L$
M>"N'+,7*)X6NR0 -S^(,QK;19?F"[IL3BI"^*NSW1P0,I:<H'8LUCV6 1E?)
M[(N*NU;4I WO/U=S] @#Y+K*B^Y(?$85J:9]LAUE@**A-$<('@-YA.%!?_6?
M&H_(D/*T$AUEULYJ<^%?IP(VO?.K?X@[^7[:_"4@H$R_<B9QN8Y_L^]E@'ZO
M0037.G'L;F-?#Q&">]5<:VV@T?0YC72Y%+G( '%2R&D$3J0Q!>K32!->M;!@
M#[ZV,?9$FWX%&DH_!"$NK%US)\"/D_NMDWRE3R^Q9BU624#(F^ ?-9>@Y,I:
M!JA!"\$ W73C+\GKPQ"B30:Q+FK@)G]L:0UWKF.P7T0/CX\I0(VBG?=72#O3
MV2*)0]?&MC#LY 2K6E3+)P=E^*Z4\:.!+@7ZH0:*LH,*!96DE XKV JIE;=?
MG*F"662B.B'%7,&DXL94=F'TKY./$R&8=V(//^ "SSA>_A$>W:XXB14TH!^X
M'.^W5I"TCFZ5)4LEAGHB0D?B$YL07.2XFR2[>NZ&@ )S\Q?2WVESHE;-017@
M)[RM?AL-.S \R_(ZR0,_T2PLXGR7%%5(R!/HSKK=YWDE(?72?<DY[A"5R,*W
MO/7="BVH$%3O+GJIYP-5LK(/H0K!SY\O%1P<,*[?VF(/<)$8\GS#;-N8K<\3
M*U]OD[S#M&5%5B *T_G57X]LO[A(NWF@PC?W_=#YO/./CK1&GDH)T^Q(Z.X$
M'=O?S+FY"^,D>8?ZNMY]T4 X4^<+OQEVRZ/_1I9 AK#OVO!"RD.3"Q55-?$V
M*FO5H^-Z^$%SY0#NC31TPSW4$5GH(3*I+D$)0DTR,D<W6-%YK-N*(*P^\]#<
M;XXQ7%T%P0&R2M%$YV;,XB,D^V=7.E7)V'[]X"<#BA*2D\0EAB]_MJ*'YBV+
M<<I%'[OMO&X2/CDR^JU9FWK1L6,],]+F7 '^+7QSP6<0PP Q7R9[9-NT$7M>
M\$#623D^?F :UQW>OGD L)4'E5JR0P]/6,K1CY'L@]E1\-%+^8FW:<&H_0MW
MU^L$'>8Q.]OR30!.4LEWOLT /7]$[U$>EIJ\*RW  /'6%?I!-.3 &7#)@SU.
M;]X $Z@D RCT1C\MK8AZ*Q%*^YQBBON!$B GKZNI]Q3X/-"GF]<BFD@Y+3#N
MT(A)1+2M1B\P[9K2P3B*>8W%7ODF5/::GC@7 OMA!JBG[M,MR&JI4WT*_9 D
ML>S0X61X1(U+9L=">5DGRXPKUZ+V%H+M.UE!Z!6@"SL#-'^1*;6*PK[* #T-
MX/\SZ  Y!4RBMLI^]#0+:0@G9*J^NJIG0R?'G&& 0@Z1.S(\TE$#*%DV]25E
MW2=WT--X,'D9_ ,)D0U4"0=J%,I9,^)RA.5!6L#:_]KM]OY6/1QPNDWGZ0-5
MVM3G#)##KQ52/^7Z6,]<I7@:G1>^W -@41RV9>*@4R]GV,7<^]&$1RST8.W=
M@L!LZO%13IJ5#OU)TV@;PH .G@T0^7.-PVZM]&)G,,\V?Z*'Q,=V<=I4Z8+1
M1&U@1A<$UG$.G!*Q'E^X@","7461!B]XZJ*YP"&)M%:@;7V5&HOLN:>W_W3#
M3%$#0MK48,C#U=*I@BWD&KC#,3::C"AX*007PBWE3 E\]TP>RP=*GA<$ QYH
M0<E==I)R%NCF6J#V\O>[ ^KE<$FZ=N_$GXAHW1#B>AE@LTN 2P1LMKU2;D.G
MW,B69H F\R;8Q%YI9OO 6JL>U3;]&+T WKG -:]'NT:PF@I\#*C^$KN1=&%W
M #RK'OXGH':-.H1\KKQ^_M'L:X."%OG6SE<&F:^LGGZUS+D@J&J?@;0I0#?<
MJ5.T)H]8&>M7]FTL'] WESZ4>RI>M898<%;TOLJ"!J<_+"?>QZZY,CT+?'^I
MTG135GA'6F1BLJKX\IN1"V7E&Q#HGXCZ>>BG6#YIU"7D"2(NRD4Z\JU?2\&;
MK>F5M0QMAYFK_D]_38I.P@+@R0_<-MT\YT+R\U24^:H5EX;&O5IOZE[\_N>!
MVOV_/_0'7R97XT96P^NDD5PEW^G"/FD-WR0C9#(LEIWF;L;RW\?3+%GK2VK?
M;1]I*;HM<VSF63WDO]%.2T&W+/F\:9YWUCR6_6295YB,\)VCEXENS%F"VSWS
MUO1K<8.$P]U1=Z_?E/^T[%VDJS3Q\UTB[(-A_)EQDQ1#W5K>L:6E/,_JHMJ-
M"0LSFLA'+$ )[%:C1)7)8))YAQE1\V7R2K:W\(^ZB!G5QATP2\</C-R5>#.7
MN7-7'M8U#F)=5T>*?LF/4H_3VZP[5:^@NB'\CR$W:<)JQ":Y-M+-2%7-2PTY
MV3?=,@%L(7B3 ;KHN?X-GQ;QP53Y\<PF=$.?=ODC]F0I=F1["_N]G&N)9J/W
M<E,/P:F%(:]?-T-YUCO#A;%.!O;>(YMHX>O"G\J3_0UWM$SK MRLS!@@89&0
MZ#P_-#7F1\Z]NK$GV.5A="S$58K?C)056J-638%9]RMVU:*&?8^;_1/@Q,N4
M>Y(BX&.T'/ +V>V U?(Q QGT:E;N,D2;9/7\F<=DM52GI[(6WH,!0NJ7PA<R
M]X-;NB_DT*>, 934I5X9=\W:)PRB@WX;0W',17U'LSY1FW FQ^%C.P9<-L]D
MW2=KF0UQYZ(;KJHS.PH_)7VH>X5F3DUYP@"1MQ/X-PO:I3C\FX4,#X)#Z#Q:
MFY4A"U,;"?C0>2LE# E+D(@(O(_G"DWVCXJ5#7XTC*,>FK+9_5X3*IY%>OC#
MFP%R3]O5TGK<[8-*74G'$GGI]K_XLH#("B$;.$O&W\_T28.]?GNB[$O8-0CQ
MTAUZO#9=E#=O$;XFA60E)=16KR#S*QD@K%L;7& 8-0PNT8H7[5)N]N-\]4YI
M^)>I873'UVRNY12*OM5Q*.FR (S^YM<6A!HE!5E: 8?LI/+/F0/1H<_Q^&KX
M8S;7]@A4,0,D!;9#-]VB]Z6>8H!>\2^11[Q6JVF%BH%@JUGPO#95'%R6%>;G
MX]PPSLOQ+>E4 '9'R(G\'34 %LUG@*;FIOC2./UVA P*-DRRHD=8" ,35"35
MFW1#O>Y6(O_&:\.E"A1X_6*C+%5$EO8EHV7'B<XKY#PPL1X#J 5X[5&FYK<+
M6 %5M;3&B;6>6^56B^2\SPS0+ZUH\@-T1.J)N69X273870"2_LC%<]'U@7B*
M<YYJ(1=.Y?20=VAI-?X'_78NWZ<G/L^ \SOS8TB;%&.J4: :\MUEQ'PV&VHH
M%,\ *72JHIMN @W_:<< Y<O!&Y],S2\-S0:@,$3]@D,+G>#FB2. !U9_K%L9
M)H^>=#Q)<\X"HM-D"OI R1C6L:_4RD($-?Q99Z_C+:0(!S &54#DFQB))I2,
M5Y?LX-:_"^5JOZ>J50-?5T>N$(*&%ZO:X70=)U')T-3H%VEK&2:H%T:$W773
MW7;K^%-8"50HX)@+X0TB7(AANLC\8Y?YK=:$.09(J_IAM97")+8)<UC+]@M1
M.42Q^:6KO$;Z:$L)9_H7Z/>AV?-H3OK!,: 3MG'8,/G=E1(TO3W;IWBR9VEA
MG'M(HH\N2UXT)AWP4JC#./LSG5>P?/&C.0H9Q8MQ4(TZ-.V9*]U8*AZO3P><
M=)81[6'4)7>FW&75&_ \$[I]M3.Z!+<4AY\8X=B,RUK@-R^MI(@YF9JR[EY7
M<;5EKY [P0 =S;9\LEE0>K*<[$]PD1DRTD-S.BGQQYPG6BK>OJPG?#AGO_:)
M0'C/L1&KL5I\J;_O@9W6KBS)>;@558&L1Y''38KPP46<194P+3V<-"V1XUIE
M;2<?7,\DKS<N'YB>#H1GD3#LQ% NO%M%>%+ZA^[<.J%\IZ%9W9M\UHZEG[5/
M]3@9%"!,7#)F7%0+*G>C/_GP3[:THL;PJ_OU%K<BI,2H@Y7O-/"(I0DE5/][
MY*70(5LO-V PJ10\1>.9:5'+V)DF@M40K:P<3+D P,L@])9J, K.2M6J@&ST
MK?""TP=VM(=49##4KAS(38#O)20S0+ELJ3]>%%#"Z-HC(Z$-F&&M1[3,H7JW
MW:6!J5 &Z-IKF,(GY$%:I'A;,J6A;'DA5<Z'1&;/A;5QV5"DSK9D-6(%X'Z^
MNZ/:&,I,E[J(\A;J%:%_RX?$S !EKO)8OV2 )DX,Y"X&GBRS"T.]!E!D!\=4
M\\"RSP/LFB]8VPE<O+UD/HR+4E5X&'"25'*#;J  5(CJGBA,LT>T5%]![&Z3
M3("1?=%IK0-]B"I983F,:A-:[EW"-?L51W\];0$-K1-^C7Z/PEV.V9"W=.;A
MFI8R:4:"10K?X!@@-V!RM!7[D!Z>@ZSS D,"/,/GJ4#=1XM])% :BJ-T2 !*
M^HT!Q?^ZP):F#&#WI\D(:B#6:=D<)Z(TIC!%)X^:S1-;US3HH913(YKS6SG2
M0-#?.*MI74Z^,B7\C!Y).4>^=?)'3^:8/0,$KJ+'HQ<AAYYDOTRD54(W]2=H
MCUHA.R^PM*9/#-!EFX<(T#QVC9-6[KFH^H2=@P)4RQ.>H=Q<+2))!R*U2^WU
M.1'UWHP%!,VZ;(K,1%*:H@/PX^$JD\6N:_\]!F@D\6 6?#AQ2G%BH>X@%5(B
MFJ7;"Y!H#:\TFCT>NK,> =0*0-97]RK2A&6R 6\@B%YC$9-=ELN?AY!F*%8_
MQKC[ET5%OUM WL4-7(*X<H69WV6 M&EIJ@K96I>ER(^G>7;F W>&/FI0)*F(
M%+KC4%/*R57\V($8\@N!@0H&R 8>62[R! $:9H JT^=[@>XIVZM:=I>?D+&X
M!*-/2=%LFB'A+^&T>@9(W;@#@I^&'WLRL?,))3 @QP#=UAV"[,C$BZ.))@5A
M6VK08,_C:'_]2D%JNOGF"P;H/B;26\03<A#0J2)"%+(:85[,M<1""M=(0GI\
ML*!8C/U\ML-JFD'29MMH6\3>[8>_/D!^UH&4VC$$ .K/3VL4.%EJ(CH--X*4
MQB?5(E/\ 9;U=MF"#TLTB_12#<BJ%WHT7F?P,X8!NC#PBPA0>G641!L=2S!)
M1E>>[D"KFJ0#I,K#IW&*KHXZ\WYSU%F! ;K$;",C@2\G3IO \WP*V@\>[<HR
M?B0%@-Y3V.U+).WE0Q0?ZDTRGO!5=JG4N>?@KRU-\PZ]WI5Q.>'H'8<U&?8Z
M_U26J^> NC C[/7FN+ LDNPR,W^D^FFGK1FCQA&6*'^KI^@.0_%//X]<R%E+
M]68"G#LMG'["PF?1O+2$F!5^4;RL)H$[>^27]]$FO\\S-]JOBG&"$#5^0[W@
MX@(J3YBJ 7%EPFC0L]:CT3PW3E=D, F=IFBT/VOFGJW=^8R;;X-;=44B4?%O
M?)XUF/B@HOAE.V;.S8O/%XRU@[O\J'EZ@ZK=%B55/CZ6H\)0WHNACXT&%//*
MXV<Z@*G0MEO\31% !%(LC0;G6MFE(?6I\B7%SVZX6XS.;\7@A*+"/Y<+,/VX
M@Z.S#1,GR$BNJ8< 0=%#T"'F ,MLD$<J8A=K$+FZ])D2/6I;'BMD,JGN@*7O
M^%G2<<QFUWOXG&!!.[I\#5:P=:S.IYP!:H^TLY#S:WU'LX0M=-_'3N9AN!B@
MT'IK18B%OSL#5/H9F*W/R\F'GQ!97D('I?8^255&TP]E$5M0]$I".61S&R""
M<0.?]B(; \0V11D:/QU'6_R!3C^%V=J",D#7(=2J1 ;HW*F+"G?1'14%% ")
MEZJ.82?S4P]:8[AJ[I)S =!O_\F"SD::S)@GKK> (ZY"MIPV*]"3[["'3K5.
M#P$ZH&^#>YD=+.CUX(/X5AH?';T[GZT/V3AZ#ELN'[U[5)9Z#IA[[5W2R=AI
M^-8Z@,>XCB#(4D.!0&/P/6'003/MS4QE*N]BXT03<:C9?E$5CK>F8[Z@&TP6
M\;HIM&6C108HZLX\Y3#UJ'4=^QA]*QN XKC/V+*UZ%T>8'ZS.3% :P<+L][0
M*IMFO'?%YH!N?U[KXT%&"9"?TES3P!1IK0DB+(^+C.);Q"WZ@AD@;KANP9(&
MT>"RSRD(SK &TNU4"%Z"$ZW54P^60E:M?F+F3L.WQO=Z"(C;>$TX_<9\Y'$]
M\F<@AKA.;&IW H21V:\/'8K7JD"5_X)LO9/#3A:8@IN(<7<A5IIH<E? ;4SA
M:L/779^C.%*"#0-4/!!$BZT[@NNO3T80;"&4B["M<0.@>!_TY"Y.WVT-S7>R
M@!*"H8]'QX[2V39=J!#6BS:; P"D'^$51C=8AQ*1P@/"BSE O'!97)RFQ=./
M F7Y0:>$P8O&!4LX8L9E'_8;5)=G=$_XJ*\R[1#@Z -ST&O:^FXEJ$$9.%D"
M0BTA#P-:*D,:B,:W$?DEVO21?BXJ[X0A'?QL&T>?RF. OGINQ=*[L.P\64\5
MN5I;N-9Y+]-[((=YLII6.>B7;25W\F!;LT"8O.Z')BL!(U3\B397()Q/ @@8
M%6YPBC]$%NLP03Z;U8P.2[[C!PY5O*LN\$-/0)F+8[0K0*[#_E&+V(\@FV"K
M89;9AOI9=69TPXTZ1:1R2, )JY:I[^_0O5,DL0[55]QM4B<\'\BE"D:72:W
M1_3HAZKQT5'CXH4#BFH/.O ;IF5ZSEL&"C>TM=W%7]JZ%+4>.CG@9S]]?(L/
M:S=!EE0. L9LK;_QX&:MT03A8(8[6X/#T(A1$^_'Z236EVTG'B)>N:J<.S:U
M*D2#<;34"$-#)#46CIB]<S%H-;H%V[9;%IZ=&:'OQA?P?I@=;,B(,(ZT/^?G
M>W/,)*^C:QO753RC9DQGDZ-H.0M2U%/P5H=%0T9:WD13=A3C<0O8TJ%EA0);
M*$GP_"G(6G=KZ^ I"&^0\B*\P(O.3!S+5(WF<KS-  U=.9.X(^UH,>_E]69-
M^D0HO;(YAQJ,,I YWX*C3;"$9,U?TZ5M'N_1,D,6651-G&U KYP%AWG7*9&7
M"9VT8@+F9;YA58LSVNT%>O+,)"H^V),(;Z5+N8PDD1Y6Z;:M)S@6[X04C%5)
MI5K:-5.,<)>=*:]_ >%<-Q-#>*PGVWZZ*I_FU+3Q/KII3'8+3F(_%TR^G^\D
M.9"+B$*O/I<J^;879L&.%%0#\8$M#EKNXV41W;/,Q@#EH7"&UNIBJH3S,%*Q
MI<;:5I'>BH&8[-)2ALO-K.X<FAC/&DZ#;$R:,QBEQ1.']/I9?PW2.?OR1DF(
MXL"=Y)42!HB#/M3!&M)UD5V@6GM?_W+BFK#SAE'X3OL/OQ]92"V)7)J]Y$[1
M((],U'?AS1S81C)$+;0),LI&H;D6?QZ=HZ=YY3! [W6A8!#$:7%U<UQE0!K@
M-,;G(X"O%U&!AI83PW<NMT/IXP]V\\VW&R4!_@7$I[6I=1+:MF#$&.C\:$R8
M@HS?#EV\!C&=F0[_ 9\*F*.BJ/HEZEB2<EW<3JO4ZNX9>EOC)G05/2N;/5-[
M 7#?]9^QW6GJ3'"R)**9O8=,(T<_&EX,K8C;(:0#+C<Z^^<79?01?,_G^2[)
M]5>PB6.&M)CGBU"2+0W&U,\..))]T/5*8BV6>G1KP'V.>B.>EM;;"(33+D<
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
M70&\4Y#0.EYRY'V$#:&'PX%^IJC\C6632YZ9IO=QHZ=78TPU[PD<O%_A\3S
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
MLAJ\;'+"OQ!W$7V];WTBN(;E/HEIB[VR>-!Z:9[/W7EHRW0D8*GLF^6(MD?
MUIGIM6'D*/KTA_O<[1=N?#UWP1U=;$]2G6#>R!/=-OAV\2OJJ*6N1![A&#_?
MT1\=O.'0_5>]"/>,E!1"1X6.BIX-?(JQDPC.Q'W(?YD<\/G7(F)++BN73;I9
MV,O7VEII:71MN56N58JE&8@[2*XI%ZY;O:J:DSU<B[M**25W'4<R$YF[:O,'
M?M3=<0TV9E^+?'_/O>_II9YA[SM%@WN7H<N378*WDK)T\>]4+,R=C _EB[VP
MT/HD>O63^)6K5QKS)S5<+"?] BYRVVC>N/TY;=^=>_OF;_V;AF3;#3(M_O$3
MY_>JS994U)T($AB1YYRL)\($NWU:D,:D#F@U.9[80X VKQ[\(1,Z.<%%51Y4
MO82OS'MP03>GX4RXKNL#S=8.G;X!4TZ(;^7T;9X.>XK%[?YE3V?V%.%%!\2C
M_(\.]F45+W6/%WXY&?.:V'[M1&##P8H>5NI!LCT0A$U<H(T,$"=5$E^K^]&!
M8S;FHX5YI\TC5P/2^RNW#FJYN5\5=2%NZY<.TE6I-OTE%@G%Q):)8*J::^+E
M&ZU\X=[A.]Z-B]OB?+/?0HX_/:DF9ZV-AP1??@+G0)TC>VM\+\ECDP83J/PC
M2'7)NE?#"_QR'$IFRZ[VKVJB[!/9:W:B;.T>77%#-1#A3U5EB1.Z ;*-UL)]
MJK*9JEUN@^;2+TW=2H) ENE.G\V";]]2"!9]79ZZC]CZ(7WQLM50J&+*.P7S
M^*R!\[.%87AL3+Q)ZA.I,+.@JWK[=4PVCNTC3!2-9Q0X@[G5KU@Y;55YOM1N
MX>L-2-&J\$\1KS)0&I"YX:%J*&AV0=-++JL[5ZX5^FTS$8]A=ZAC^[;\!,[E
MR"?$&>DD8#&_:U=D8=$H&'%!YQNS9;&<BHBNVJ+1OYT28F=QZF!T%O4.Z3@
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
M(_'"Y2*E\('(S&"&$DJ F(??1A?"M4;1+,RP%,OR 91O<^3O[<O7 B1/)\U
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
MP8IO$VZ@GBC\)H6*H8-S(9:&>#%#M3&#(#V4J7,]USM]X>09MRY-[?JZ2W<
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
MP!X%*U,T%RM2OR5];ZJ=KEF[<"P<TH1)>2(QZI;[!'0P^3]02P,$%     @
M)8!55N.4FN>A%0$ _XD+ !4   !C86QX+3(P,C(Q,C,Q7VQA8BYX;6S<O7MS
MW#B6)_K_?@K<GHB=Z@BAB@^0!'IG9D-^]?J&R]+:KJZ=Z[B1@:?$J52FFLRT
MK?[T%^ C'\I,)L $*?;MCBC;$@F<\P/YX\'!>?S;__SQ, ??9%'FR\6__RG\
M.?@3D N^%/GB[M__]-N7=Q#_Z7_^QW_[;__V?T'X?UY]^@#>+/GZ02Y6X'4A
MZ4H*\#U?W8/?A2S_ *I8/H#?E\4?^3<*X7]4-[U>/CX5^=W]"D1!%#__;?&7
M-.&2X9#!, Y"B$000QJS!-*0T%@A\U]V=?<7(HA2E%(8"$0@HG$,L>((2D$(
MHF&JXH!7@\[SQ1]_,?]AM)1 *[<HJW_^^Y_N5ZO'O_SRR_?OWW_^P8KYS\OB
M[I<H".)?VJO_U%S^X^#Z[W%U=4@(^:7Z[>;2,C]VH1XV_.7__/KA,[^7#Q3F
MBW)%%]Q,4.9_*:L??EARNJHP/RL7.'F%^1=L+X/F1S",8!S^_*,4?_J/_P9
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
MEG9Y^_ X7SY)61UMW^KGY5Y?85HS;>NAE^7ZH4[*J<C75(6NBD+/5"PY9ED
M@XA0B)!4$(>I@C2-2!HKH>UAIT/K 66=&JGL- S8BJS-IL^WMXZIAP.NKQUG
M3635AG;V-%I6ENSIA,56V3JB![3J5IWL]MI$;%5N;.%AJJV/L#B^<B 'E'3<
M9,GA(3_(JAQARIXAEHM5+O+YVE1SWKIRZJ[L4I@(3Y,9O%XU7=S?TL+L"DR;
M]DJ3NFO[C$:!-C))!.,X81!%IBBGB!(82AZE 4<TH=+E0^-%JJE]4FZ7*[W>
M.9W/GT"K7)/.ODVY@FW*5>]<=S\K:O=I&7V=!OZ([.JSZY9N-0*&3<".3N9K
MTVIE?"WUI^<*U)IY#!CU";2OF%(O,HT;=NH3QH/(5*^#]SFPW7QE7M^;^@WE
M^VVOI'?+XLURS59J/;_F5<:9\=??%DO3-JGN--8FY3X]LS)EI*$6"8(Q,JT;
ML= ;"))D,%1*I!'"D0JQ_8GN(#).C>H;W4PD^48[H)8%:/4#K8)5S$6CXME.
MIZ,MN<WA\(LOY%@;BAL%VO5\O[N>[XZNY_7>>AI5-\VSGUQV$J.MM<LQ](NO
M^5CGU/[7WM<I]J!+T'W,/<S4(YZ##XK=_D'YL%/U=#6N62G_OM:OSUO3^M4T
M?[C^D9>S)(MC$5.]>Y.!,$?C*<2<"4C2%#'".*;(Z6C\Q#Q3^TAOQ025G, (
M"KX:41U/K4\!:^F?NQRNH3^%?9!R=X5UX^#+C75BEG%=4-VJ'KB/SES>9Z]
M%__WLI2OZ3S7=NDBITU06D02+D2:P4R$%*)(LP+F,8-AF 8T2D-$N%67P*Y)
M)D<$= &,G%=@*ZF+778"2ALC^G* AG[UCV#3*T3R!$@NUN?E8(UE/KH\4([V
M7S<(W0;<B7M'M,"ZI=\WH<Y<.V9'JM8_;T(?\P7=EEU_MS16G8F3:9SV;^A*
M?EE^DEP:+U!=-7'-_DORE?YI7OYQH[3YIV1NBB7, AQ1(96$-&82(I8DD&",
MH>)8!8&D*<M<8N4GI=S42'YS\+?:JMETXP"J510\MN>!PN3#K):@J)5M7/&@
MK-6M?J,5-NY?M5%YC Y, SV)-M^J:8D\I6_DY?V>-D_G#DA-&5VP@6E[6FV
M E^6H(&J'KD$#5C5;\S3>:/ N_\_/)UCM!=[^:?TGZ<[V4L^K2.U.1OV<1BF
M2]I ,O\3-%D;=K7\]&@;6,:>X1^- [*>S#@;_UHLR[+)+9TQR5*.1 AYR#-3
M*3>&C! )&<8QQ1D.>) Y5M?JG-"%+D>JK-7Z]HN-P([A&-T(6\99>$-MZ "*
M%JZMI%> 26TCRV<GH:\+*?(5,!&T>IM<*^(Q7L(*,%^!$-V3C1OA8*7X0>B"
MW5W].,8D!*Z>#%LN%WJTIH=[B+(L)1&%(I !1+'^#T%*0"*H)"D2(D5.1;B/
MSC*Y36@E)-A(Z=APK!M1.RJY&*>!&<0=(F=RZ(3 $R<<GV-4*NA4\SD#=%_L
M[;RQ>52S4$99S!)(19!"% 01Q&% 8" BSL,$8:6L3AG.SC0U CAQDM:+!4[#
MV_O<<7)LT!,O'V>/@]#"Z7E>^ORQFQ[.W]!S_U&U WE'\\)$NE?5\.=+TX!R
MAK%4,E8)%%(RB 1-( LT6;!$J8PC%G 2NF1]GIS)B2)&R #]8N;HU>KG-)B6
MNPP?$ V]P6@Z^A@IJW2=NDE&+:?'_<,Y*'QM'4[.,^ZNX9RZ!QN&LS?TXX,Z
MK?(+_:%W(EKT?%ZW:*R#J-XO#AH);?-CVLWE+(I"$4M-%QFF B*.$H@S&D(5
M1I@KI'] K<IW^A-I:D9(+;H)3A:'W<7 MTT.'&T5N#(M6+OR&89:2SO>&G>%
MAM[_*"5YE7_2Y'.;4GRF.PS8U^X*;)?Q2,^SW53&[3+Z3DOQA[PG/O4@T*C$
MZP_ YPSM<>0>D1:;V67Y(5_(]ROY4,YPP-(4<PP#G(40D8A#2K,4!MJ@8W&F
M_V=7H/3D#%,CVNT;+$OPU8@)*CE= J>.(FEQ7'\I/@/3W&#0.)P57PK12 >V
M[E"YG9%VP=!Y4'GTQO%."[ODWCNRZ[RP;U&Z<E6L^:IND:N7JXKWEH3$BI(8
MIB$E$*$D@10G'*82!0&.41)*X59C[L@L4R.Y/2&K.@J]8NB/(VIG %Z,T\!D
MYPY1C_)J'1!XJY9V;(Z1BY]UJ'E8RZSKXGXO_F^+0MM3=XO\'Y7MU)19+C7%
M%*:[8ZGG7,]-L\<JW[<^/ZN/^?75M\NRZEU3SKA* BX)A2Q*8FT*20R9*=TN
M" ^SF 2<)%8YM7[%FAJUM+U^RNK$V.Q1'UM102'GU-0O7"T!;XJ8/TE:N)&.
MI]6T8ZGQUVA@6MM5J-IZMBI=@58IL%&J*9W0+%43+&9NVFCFCPS](NV)/3T)
M-2K=^@7R.3]['KWG(:6)KV+GX[G8\WBNZC]_,\V(%G>?3/&6LNG?2^_D3,F4
MBY!PB..8FYH)$<18(2B"(* JBN(X<.K%,8B4DZ-[(ROX5@L+BDK:3;-Q+:_C
M\>@@"VMYM/K2RS7TL:Q-##'KC"&N%[M1%7QJ%OOV_&*[G^T.N1B^SH4'D7'<
M,^4A83XXCQYTLK[A+@\/M'BZ41M_P^OEPLPC%SR7Y;;B1IPPG-&,015DQOC'
M>AO L@P&L3;[.2<8$R<W@>W$4^/[D_8CN#8G(%U%,RY; $L2'P#6H7FY%MFD
MI>V<'NV)/6PU2T?(O$756$X[<I"-&QB',3>.]_>C+>,8^:B?J<K?AE,5J5!2
M*#%)(8HR##&2 B:,*QY(Q*ET*AR^._C4Z*?RPQGA>ODK]V"S(Y2^8 Q,&M8X
M.-/!,84]O?)[0X_Z6A]3ZOFK>_2:GKT?]3M?4+[Z/5_=MWTEJQ/;CW(U"W!"
M8BDEY*&2$/$HA3AC%.KM98C#4.$8.\71=DTVM=>WE15\U\("WDA[58>Q.':
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
M$ <9AD@&,N8"13Q63J=#SR:8&NW624,[IT$],K5V\;,\V;D E:'/<BI /E@
MTB\]ZHC6/I.==H<?/W7IB')'$Y&.73=0JQ;W0O@S&:I 4<$A"<P)<:R)@!!)
MH>8&;8:%VD:+U&PA[^A*BB\>F[*XBVKUWI#ZO3D0>,"O9T?[E:KE2NF[YTJ/
M5;9CJI=:M'^^#)ZCC5-&[(O2?R'&:GW20\)I=3?I#[%S Y,+INIWY!6%>IBJ
MD9C&Z@LM[N2J;/WZ*HYBGBH8<9-&&BL&J91Z7\XQ#H(TCM/(?E_>.=74K$,C
M*]@1%C32NIVB=$!K=T;E![#!#Z2.8]7SZ*GK>70Z9_(#WFB'2HX/G//QT7DX
MSIT5=8PPZL'0>4V>GP)9W.%>?/%-\V1<+Q9K.O\D30SAC$H39Z\09"+1F^<X
M$) 1E$#)9)PABF-%K6JVGII@:D39R@AJ(4$MI7V%Q:,@=I.C#V@&ID1'5)S*
M*':IWJM\XM$!1RN;V*7.;KG$SNOZ6#YU//"K=9DO9%F^_6::Q[5ANI)$0@0Q
M@6EF#B0B\SX'E$",,AF'4F0RL6\KT373U%[G5D@@*RE=OMQ=>-I8.YY0&OC-
M;L/(-T#5@IX/=W9$S,74\83<2)9.;P0=+1X+5+H-GJX!1K1W+/38-W=L;NCI
M<]R>2=#R_GHAS!]O_[[.O]&YF:4^((LSK/>'(H8R1.8D(<.0$$4@B],XP:$*
M)7-K:6\SZ]2(=.]HTN3*F=.RZB\[DKL=3[JM@J67SS>V8Y[X]H;5W0?G I,O
MKYK5G./ZR5Q@./!\.=WL'H'W><W*7.2TR&7K+X@98C&1H>:?*CZ;Z;\);=5Q
M*B*E_Q)EL56MZ^/#3XYR=B2TCX [ ELW=5P.QM <L2.<YZZZI_6^(-;LR*"C
M!9.=5F@W6JSCJGZ&Q.[!.4YBFB']DC(1Z;T63S@D..20)RH@@F0)CE*7H@5]
M8PY&J$I0=5+L'W/@'FXPS4B#06(,A@LO>+'( HN@ G_Q!/OIHJ=*LU6_-)%(
MX4R*F*<9T\8]#1A$))70=)R!'(D@# 3*0DSZIY.?%V!JG]]GN?M7X'M;*>BP
M8FAU114S=TEVN<4BV='$D- /S"4'&>@=)32K*SP7S^P+W2!IZA;3OV#BNCTX
MW:GL#N.,'%KU89,EPM,TC:,X@TC2&*)4<D@#J6 44A*&F*N,NQ=@ODBDJ=%E
M'5G#+"-PV&$$3H^,'X\+;.E>&779AMY771HSY3DWR#_(+QT/]6'<;"+_ 'J+
M=CH<N8=#J.VY^%>YO"OHXWW.Z;RJ9)LJ+)3(4A@Q&IHXUP 2B144 @=<LE E
M=HU5.V>9&N'NRN=4#;@;2PMGD0^$!N8V%W#</$;GE+_$<71R[/'\1^?4VW,C
MG;W8:X7,]XMOLMRO7[>I51ME-"5)%$#!6 )11@FDQND4(*D"AE <*N%6:LY=
M")?'?YSR<QMA=PID.I8.[K$6=J;4L/@.3"]G*F9N<=]J,4C-X/X@#EM$LTN
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
MF'Z'R\V;,3<Q\7Q7WGZ=5&T6P8Y9!H)V8*XY4LG+I'FW,!O1P6LKF'OW6G4
MS'/;59N97Z0#JP,DIYJQN@S1H^5BOL@?U@^-0S0C 14""8@T0VF31H20A"*!
M@@8DC6BH&<RJ<,?!R%/CH$8XAP:+>SAU$\E%V@],$XU<'IV\)[6]I*7BWGCC
M=5,\IL9>(\6C%_2-<*.KJF+!C7J7+^B"YW1^NRRKHC\;6QBA*."*4D@(SR 2
MDIL]ANF\+B*%PP3)0+G%MYV?=&KOZD9FX_?:2 U:L6U,ZOX+8&<R^(9U8!+P
M@&B/.#5[B+Q%J5E,.7*,FCT(AQ%J#O?V=6:^?9#%G38Q_EHLOZ_N&X_T#-$X
M)(DY $IBKFT#1"#-F(!,1B'5_PRYW0'0F7FF1CR-RZZ5%=3"MGYZ5[?F<6AM
M79L7 S:.>],5JQX.SDXD+G!R'A]W9$=GIW*'SL[NRWN7*'E8+JIXV%M:W!05
M[PA3KU>VO=YG0J5)DG%MAU"J-PN1D!"G",,DC23&<1 @A=Q<GQ:S3L\)^GHG
MUOX*/-("?#,"5R'T8CF?TZ(TAWQU.+UC-+W-,M@9)YZA'9A(&DP_UYAJ@<TA
M22UR59E<F@/G.J+>:PD46XC\E4,Y.^/8I5%L(3A2)L7ZUGZ<]'[Q31L^R^+I
M$_W^JQZ\T+9/^5%J4^B3+&7Q39:SA*!$10F!(3.N"\DBR 1.(:<I(S(+),NH
M&R6=GW1ZC*1%!0^MK&Z$8X&Q'=_XQ6U@NMD(>P4,=AMY3;).M3UJ9?9'-O;X
M>.(:BPE'I1I[ )XSC<.=/:+?;!H:O/WQF!?5WV[4QB%;7V_<LC/!"4X3C"!/
M"8$HSB)(%8Z@#$6$510E2EM&MK%R'@2:VI[JR.&/W&@ ?@&TB4F5.S]VB"WS
ML83=+/<2"S/TWLVZ<<Q6)W"C=DZ7FOM^,HI9VKG^WCC[P,&1EVVD,,.QEL\M
MH- CUIWAAS[F&2]8T2,J>Z&-/L=U/T3<-O-9B/^]IO-</>FAKWF5!5ANNRI7
M!5IF*"(\02F"^DM)M:6>F%JGH80IQ3CD(4E39%7XV'GFJ7T+/[]]#=I:*%<@
MC&! KG:Z;YDDM*U.H%5JI_%X4_+&\MS#?:7.'W,.AO_0)R"#0^]T?MH+Q@O.
M5]WF&^W\M1<,N^>S_0;H[R?-Z^0T/9LI&J^GDIINY<Y$FW-$S+,XQHQ!$BC3
M7%(PR#*1081ED(@XDRF.'0L\V\\^->+;$;YZU?;$WWO)>A[MNJV-O1MU$,1'
M<*CZ KN78]49-(\N5ONY1W>V.L-RS.WJ/D@_LOM22*J'>ZJ<O+6_MPF%"C!2
M1+$,IBS6UIS@VJXS<6,RI$F8!DD44:<(E9,S38W$6D'KHPHW?CH-IQT7>0%I
M8-[9Q\=T\ZL.=OQG%Y\%PQ.?G)YG5.XXJ^YSGCA_@WNTR/5:Y'I5JHJ "1-I
MD%$.49IJ@R90!#(<!3!@",D@34,B0]OHD)UQI_:^-Z(YUE#<!:K[W;Y _8'?
M9"O-G2(YCNC9*W)C=YS1(C6."+\;F7'LU_T^NN]H7E2GJ-O/>;DM]DL1R9C4
MFXF09,:-DB%STL!@(K-48Y3&B#NFGW7.-[VS3B-N$Q+P:\5PLD>ED&Z,[;[&
MWG ;^#W> 6Q'4O!UD.I%5J!X^C)WSS7JU]E*[>=?:+N;+LQ?/4R'"D.5"1%P
MR*0@$!%"(4UIJ+_C5#!N*A*E3FU:_WE2T&X>3Z:?]<QB[9ML]D^16S9.&MEH
M66-321)SSPGSG@)F#)8O!15ZR,]/#VRI']B8(FT\8$A"K*WY1.K]O(H#&(4*
M!X@20955&X>#D:?& 8UPH);.WJ+?A^N\3=\;A,'WYU;Z.]GU1W7M9=GOCS2:
M;7]4@5WK_O@%?=,MWN5S^7%=.7Y($,4B51PF%&&(6)A 0L(4TC".8Z&B (=6
M@4/'!I_:J]<D"Q@!02VA:S+%#G#GW\!+X!CX)71 HD>JQ*'*%^1'[ PV<E+$
MH1J'F1!'KNEG+]M$4N@?OBZDWN:7)NQ03W$_HPQA3&(&XX#'$/%0ZC=71?H=
M1DQ*3+'*R&PA[ZKB??8F=3]IK!YP4C_@!S(-][!_^N_TX?%_O $K^@/P6F(W
M:[OGVMA9X@-"/;4P/O.+6H\KT"IR9?(J>%=O*F>#_C)$/1G[/848=2-P&5#/
M-PD7CG9QT>.JJ9/)12ODO5R4&T',GN5#OI#O5_*AG"FB4!C%AB9-3FF$ DC2
M(( 4)PIE(<FRU.K4H*\ 4[.)=HOVUBW.]C38C]$$7XT>H%+$,33">:'LV'-(
M^(<^WO"/_"45DIW@\U\KV6[ZEZJ:[ 1.1_UDMW'Z4>*OZT7.\T<Z_[A<R;+M
MZ,H31C31P3!+,HADP"!&B$*4*B%BE2(>.X5+')MD:M2VD1'HO<:ZR%=Y1SJ5
M/91VQ'0I0 .3SQ:;2KX!PB.Z /!$'T>G&)4BNI1\3@.=U_:-!5U445:_YZO[
MU^MRI9FD^)!3ILVMU=.VL^4LIC1&B"=0!J;G XM#J#>-"&8IBU..>>1H]%C.
M.S5"^+!<W$$]T0-X7!95P/52 =$6L"OD-[E86\98N*Z '6D,@.O /-)*7#?Y
M:V6^ ANIK=H/]XCO= +*6V2GW:PCQW0Z07$8S>EV>S^B:G=[UPOQ1K]F\V55
M1+ZIBSJ+(HHR03*8"HSTGBPCD"%DDE>)H"+2_U>A6TA)YWS3"REIQ:T"I<56
M8#<NZ@;9CH&\ 3<P[^PAMB-I6_'8']58(>*)8+KG&I56K-1^3B9V-_6CD-\6
MA>3+NT7^CZHVZ2NYD"I?E7K_9.),I7$HK>?FC/J=UN6VR)=%W6A!7]N6*RMG
M"<I8@F@(PY29P%&9:$,H3$P;+(H#)45*K'( ?0HU-2OI6HA:L+I#"/VAK:5&
M5&TCU?Z*U1(\&FW DUYO-Y;RLHYV9#;VZ@S,>;OJ5+[T5J$KT*H$-BK5K5LJ
MI9I6.=4M&[W\$:1/E#WQJ!>11J5;GR ^9V6O8_<\W?S[NNX;U/A0B-+;3D8Y
MC-/0%'S&$A(6"9@HQ@B-HB0C3FF)S\:?&J5^D:6V3%H9'0\?GT&'LCCB(0DA
M#V4 46 2GUB60B50@DD@$7=M_W$!>..8QQ5\T@]\EH>R_2$9^K2UE6P E]T)
MK7V=B#X;?=RCSN.J'9QAGKCLLD8=33/,S;EH8Q W1#QC:<#2F,50B-24D.-Z
M^YL%)J0CP2**TS1A3O'0=M-.C2,;:?MUX3B#L-U+[Q^W@;E@TWNC[;:Z$X#1
M" U^:L3V4%^G'TZ>6VZ<F?1%NFW8 7&JT8;EW3T*RU4E,)DV\80Y<M2#UC4J
M3!O"NRIIB3UM+[FE3^9'UR:L^U8_H??ZA]H8Y'*I=@IMWB@MM#85F^Z9023"
M,#)G"@1%$"51#&G((\A9&H4(APD)K**VQQ%W:I372N?>YG7XE>VFS.FMU\!4
M6RD"*TW KK9@1UW GL#N=8W*H-+Y"K1:@TIM<_2T7W-X\S0X=[8=_FEP*'8W
MJ:=BI%)X$WHZW*KEC;98G;7TAI=BO$I[HR&Z5X=OO%G=J_1]R5=S>:/>+T3^
M+1=K.K_^D9<S1%&8L3" L>GPCA(90HR2Z@@PD1$5*@RM+(>3,TSM8U\):=[K
MK9C@JQ'4H8S><2B[/]5> !KXZ]H#&Z<Z=YWZ7U#/[OBXH]6MZU1KMSY=]X4^
M$U;J<E!KS1M-SJ@YK<$L"^*02TAHDD!$PQ@2%1(8)F$J$\P"(>5LM5S1N:7#
MTGIJ)Q+8"##@@V[F\)%\<A1G2]_F(.@-[?:T3C(9*9VD"Z]!4TB.3CR!M)$N
M0.Q213I'Z$=2M\622RE*<[+U(5_(\D;5^2<S+)((Q3*%3-L>Y@0JT_9'B*'@
MBDN:TD3PQ,7I>G*FJ=DAK:#U ?'<9!7H#V^=%^?&3*?!M2,B+Y -S#O[:%52
M5GNS;KB<.>8L%)XHY?0\HS+(676?$\;Y&WH'4)N/14TVG_+RCU=/K^2"WS_0
MXH]ZF\(X4@)3F 2Q@$@I!+&I>Z7_F60HY3(@W#%RNG/"J;'%GKS " PV\CIM
M7ZP1M^,.GS@.3"&70-@G,-H*%W\1T=W3C1T*;:7\D1AHN_MZ=EPVGI=7'<Z9
M5T_;2W:=,S>/E0WT-UFNI+A>"',RQ$W2_-+\Z&:]*E=T8<J"-"4I0H43G@0"
M!BH+(<JR%%+*,>11$K(@($$:8Z>NS2,)/C72J_Q?8%DK ;Y56E2!QK+1P\0_
MFA]7'1>K+HNV[6=&?R;LZ'2**SW*B<XK2Y_]JV,^^T;Y*_"W[2/R=N<1,3_6
M5VU!N/)6;.6E%LY7B^RQQ!ZWS?;(BW'0JGOL^7M&\I?R1KTM5[GI&%G.@HB9
MT,4,AA'2)G:0,8BSB$$A%0F23% JJ5-,_M[P4_NV:.G,!G(CGV/P_#YT=N3>
M'Y"!*?@Y%E?@=CG/^1/XVOPY2(78XW#XBCS?'WS<&/*CBAU$@Q^_JF]X41^Z
M>;5<_J')I/Q"BSNYNN;WN?Q6W7 K"[4L'JA6]XM>D/)^.1>-/W>F>*!P($,8
M,,(@2@($::;_F65)0(5*$8Z$6ZC16*)/C8):'<"J4@+0K18F$JE5 ZQ:/:[,
MCSN=ZB_]<'03X;27? IV[JM..[=%P%3PJIZ8'1# #@K@R_:).7<,\])/C&M$
MTQ2?G%&CFR;W!/6(=!I[$<]'/8TFT<@14&,C?1@--;H$_39#;1;>&UG_^7[1
MM@W4@E7=,*MCRB1252ELT\(O@5CP#**4<9[&L<(J=4OX.CNG"PF-DP*V:87Y
M6$OHMFTZ#[+=3LHK< -_]S<IP3^UTOX9Y(MM3]';,T Z[ZNLP?&TU3H_WZB[
M+VOUGV_([&_T=,;9$!>]D^$LCCC*9&K(A24086XJ?V<(!@D*6,(Y2F*G@@A=
MDTUM'[1_,+<)@@"%%GNSY=&"7WC N0MWS\/-GB".?K"Y,=JZ4+O\3/,('$.=
M9^Y.];)GF4>4/GN.>>R>D<\P:X_QC6JKBM!Y=5UYO5[=+PM3DF!&$$E92#!D
M<9Q"I B!F"(!8XP%YC@(D%TCOQ%DG1J%U1(;[J(;F9L#24 W4K_ ,:7%L@]\
M,NEW,:?@I.D^C-P^"EN-Z^M+L-5Y B>/]@OSTH>-%I+^<YPOVD/N[4C18<J>
M9BU]S%=T;D9J:QB^7I:KZP=3VO,?E9A-\B+%3!NY-($L"O2VF:4!I(I$D"LI
MLS!.5"R<ZBM8SSRUK\6.X("WA3OYT@0IT!WAG=*1W9?#T@8> N2A#>(=?#>%
M45]7^.[*[2V%LS=6OJQEZWG'-9U=X3BPHYT'Z)V=(-9\]3LU=+IZTMO^8DWG
M,T5#*2))X/]'WKLNN8TK:Z*OPH@Y,:<[HK V 8(D,/M7^=:GSNFV*VROM6)%
M_U#@6N8LE51;E*KM>?H#\*)+2:( "F31,_O2MJM((O,#F4@D,K],F8P!IA "
M2A(,%-=8) RE@B:S^AO]LF:KM9O5.CV8S]?S<L@!3RC9O#H-8,;I40_%8F$+
MGXUGX\\V> 9BEJ8\3\UJH#*5 )RD":"I$(!1B 4E&5$L;2!^OY#C MP.. J\
M:B&# NMFW*^':FA_W.8[&2^F2>E;&YBLQUV+';5R1XW@0>M .H )5P1R:I"Q
M*T Z%#U1_M%U==^3%YO":QW6N@KMHUK/\C3/)484Y)I#8WJY IQ#!E(M!(5I
M+!/A?=9R-,KT3E?N%L;]M/G,1=-S1M4<1+_>1 OE615V"E;7TY6KH!K\/*65
MKBE!-5ON#FQZ')^<U3[8@<GQ"",?D9Q5\?A0Y/REO0]:ZU+37;/S;:_S649Q
MKIA. 4Z9 %C'$G#",&"$<I1H1922WF>L9X>;H@%HBZI],U([874^50T"U? '
MJFWA^4[0Z,]!<E1=( EWC'I^J+%/4"\J?>+P]/(]/7);3[7%N"U+M=ZEQK]1
M;XKY7,E_&=_YTT*UB66<D)2K7(",4@DPA,18$:6M*8%<2B*Q6R/SZ\287.CI
MH$^,V/:)85:9FX/"*JXB7FG4)^VT_[QUVZKQ9F/X0]MZ(OYYV+#GMIZ(;?G2
MUV7T1D5OFHFPZD1&GSYYG?VGQ"-'<Y2I&2G?<N@I\DN<O!K9SB3(_D\?+Z'Q
M:@0.DA.O?UJ/Y>R/0LJY>L_*]>U"WNI5(5C#ATX$%S#'!'"%%,!,,L 324'&
M&*+FY[&4[F459X>9VG)4"QI92:.J.WA42^MAULY#ZK"2! %JX)5B'R,C98/0
M9=IY'Z@\+'P0R$:RX*>A"V20+P+1:7#/WSV>0;VHP8'!O'QU#X-8A1"5; WP
M9\6K@DJJ)::YL8$QY@S@G&A ,IB!-$,R1R2!"#K5HG:,,353V(H7,?EL3P5*
M V*TJF7U^,;/ .I@"Z^':6!#V BX]<2BSZ'0\3!_UZ,TDNUKT6KW>.V[]+=
MYJ\;B$[;=^;6\0Q?M^P'5N_"I=<U)/EB7@)EK.GO!NKYN:89<8XI0;GQ#%-H
MCZ&% B1&!,2::)%RD:*$]VE+XC+XU(QD)7._UB1.6+L%2H="<&#[N6U34LE=
M':E6DH_<KL0'M<!-2YR&?I76)3Z@G&M@XO6,_F>U"S/-/SX4BZ+\IN1ORZ4L
M/ZKU)VU[CJZ>S6**E<@@2S00.>1F)\LA(#!#@-EI$5!K%7N?X5P<=7I'.:VL
MT8,5UO_L]A+,[F>Y :$;X6RWDO8FVL)7"5R=\=H$F5;HL.>]C@@%//^]-.+H
MY\&.$)PZ'W:]M:_)J7,B[EDA;0X#5U#++,L!,OX0P#)) <DQ!"+.M=DQFO]+
MO5I6OGC^U#R>;4K(DY'/UXH<(N=J,7KC,;AU:*"PHMGXNYAO+!E6M)_OVUYD
M6>$J\FKS^UO+<5VLB[!FXR1,P4S$X=-'-@<G53O^]$]?UK.- 5O9[-+R7JW:
M0H9"S" A(M,X!3%-&<":V":K,@$2QV9/I&$,_4H&3HXRM4^^$JJJ%9/+^9RM
M2GO^6M>->9:-G08UDTG.S+81)#E) "8D!53D.8ACB9 UJ GU[5Q[+:SCN&0U
ML NURZ^;+\ORUPI>47=YJE >$'LW&WPUG@-;XE8^>\19U[;=1)6, ;L]=$$0
MJK'#R3'&[>'0I>91NX;.BT<N**[^\]EV@RZ+M?IB7+U"J+H< \XXYUF2QAE
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
MYT"F,F:20P;U(,4E.Q&F9HCZ];3RA-W-\@P+YL#&J%\IR0!MK?HA.'(9R9X
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
MTC0E()89HY3FF.34+WS4,=KT D=;8:-B3UI?YL'S\+HM[H$@&_ASWF&U+^8
MATP.< 0C!CP_TL@,@!=5/J;ZNWQ+CY!%W2;W;M'T^'QOR>)E7>I\5X=$Y)M-
M0]%\SPHY0RG/42Z96=(S"3"WB<Q""TMCF@I&L(A)[!S4\!U]:DO_7I-A)JIV
MCV7TQ'Y4A4WV:-;\<+51!\V&HY6J>XFLE]&3D>.;C:_:[$4SJT]JU70-MP7I
M3X]=$<, 4^D0<AER@@:V7[7HT=UBVXEX7_JH%3\R\E><^4:#R*HP).(>T9TA
MD1\I_A-\!OSB17T1[(PH>3]TO)A37WT/HE*]']*WT]2S6FS4!Z/)^^_&8B_8
M_.VF7"\?C?%^\^,WM7Q8L:=OA;BU/:FK+/]=.9B@0DN44I *R $6) >$B1QD
MJ81)$L>IRKR89Z^096KK4J.*K<K=R1U]5@_.V<TA)LC-&QX)]H%7FQ9Q^TU&
MK1[15I$7,U'ITI0##5/R%P#58'VU^DLR<O.MJR$[[M!U_2/#M/#;ZV+7-+&;
MH1Q1DAC773(! 28I Y3E.5!($,%$JF"._&(!EP>=7DA@O[V?#-'>[P32KH8P
M)'J#V[N7;?]^.=$H\3R7Q]4] ,^C,U _P!,#OFIOP/, 7.H3V'%GCPC"K3%F
MA6#E^^]__](V"8XY8IASP&2* ):, \HS9-PSE"<H3U-%G-HJG7G^U+RM]QN[
M=??8-YZ S&$O?AT0 ]N#5CCC^T1__]N7O_5)A3@!B\>&^3IX1MH2OX0IT%;W
MO.Z=F]D3MXVW73TO\\&&M..RD0GA:N*8^R9F)S\L5]6/9XPC2!-!@<+06#N5
M2$ $Y8!(Q3,J<!HG7MFBH06<FKEL**#:X*>L**"8E70DYJ]S$^GFIKWF] Q]
M@GL]TU<SN?<'DWO;.;GC\7M=F('7YO4Z)][/P>=U =Q@/%Z7QNG?*72O.^#M
M^BU;K7X8;[EB)IU!!&.4:PIX9CL12$8!$TD*E)0*ZC2G>>)TZN4VW-0L=M7:
M4NW$]>\(V@&MF]4-!]C0QTXOVH#>1&P=M<+67,=AFX%>1B5@+]".P49O!7I9
M\5.=0!WNZEFOV1P USWW;"SOHUHWY6$SE,59)G(%<MN_!&<J!5SD A ,8ZUA
MBG/J&6OK&FZ24;;Z='RU%;=B5_<LX^R"6&K--+,>N$XR@/,4 HJ%!+9:5NLT
M43*+?9K%A )XC$XP(\#K9J9#@39TM*+%Z_,>7C6__.U\OORK:A5@/=>W*R6+
M=60[/6PK; .6U3J@%:JZMFNH<8ML'90^JK5UN:=G.$!\4W(S5Y_TAV)1K-7O
MME_JW6)M7I?"C%-7^=8\A-#8$R:9 !E"')C-?@8H88GQ!..<:%M;D?JUU7 >
M>FH.82NYS5NJ90>5\-%.^J@6OR<!I/ND.&[:!X%ZZ.UX.)3]]]C>@(7:/;L/
M/.Z^V!N0HQVO_Q/ZF;1=!^A;8;S=E?J#K?ZMJIY$7Y38K*H\Q!FB4I)$,9!@
MF!M_B3+ ,F79*#,,24ZHPF2V4 _VF.BKNU%S&MSI(Z/U1W8DPG ?W/U^/N;C
M5NZHW KN9\;<)L+-@H7#=1SCU<IK\UP;B:.=R-&7RY!ZVRPOB *9*[<Q1[54
M7C"\-%)^-U])C?V^:KMEXW_+1;4AKVK&J) P(68+AUD*<*PPH*G9*N="(IG&
M4&74J6K>:;2I.5:UC-%.2*\J,C> '3VF4+ -;&>\$>M/LMV%1&C.[9-CO0X%
M=Y?:9QFY.V_JD66R[5!<LUQ6AP#\Y>G!Q^7B697&6:BY,O=_98M;/R[7/]1>
MB>O7Y1NU^]?=XE^*K;[^M9P))95!3 &I+,=2EE# *%8@T:G -(-9 MTIND<4
M?&K&K.KU!BIEJRZWV^-$9;/*RZI[*E<V9M5H$JW_6D8_C#)E$XS1A1'MP2.%
M9,S7I-N.3GGRAS;)VW;V#4=R?5[,C\Z5*VJD6O>&=?GF\-S9ZE^5AA@$HIW2
M-Y: ^8W:^XDM,K% 1 :)B;XN'JE,$WUM1LJ1FNKKXY>2]0ISV)GK-:8\XR61
MO0+*!]EIKS%^3SYO5JRJ8\X]:@8;3]^L;!?6EMD;":5CQH'F. :82@X8SU.@
MI8!:(LHRE'DQ>SL,.C6OQ<K<]B3>BNK)0NV"M=LV+#2" R_])\$;@IC: Y90
M%-4N0XY+5NT!PA%MM<^](R?:?GJJJ+C>?U<K490V]/1/53Q\LP;T6:W8@VI^
MH^Y7QN;.4I$2AB$!6F<"8)0IP*!2@*I$$4W3G&=>K&8CR3TUNU?MUJ)EK8/9
MHFV5J'KSRN5\;O=E3V975O7I':M-K^?+X!C<FMX4#WV6>'UJ;Z/[3;2G_4W4
MZA\U +2_55$%P02R?OO-V6LG WM*_7/D"/>;BF"IPSV']UO^I"IF[YJ=\H>B
M--L$Z\!_,#\I9R36,N:QM-R;$."$:D!C@8%@F*8<L31F3I0%'6-,;5EIQ8QJ
M.>MM=B6IVP+2!6>WL0\$TL"&N0<^SJ;3 8$39JY4XF\/R^?_,'?7%L[\96?8
MNIXYBA%R4*HU&"Z7]O-M;?H9*[_=KY;/A53RS8^_EW:KOF47OQ7KXKDZ*]UV
M&^$9UUD28Z 5,=\^12D@3%.@TB2G.A5FYTW\4H#]A?!Y[\=NY<"VTGHV=^DQ
M%VY>XK#X#FQ7C/!158O0BF^]NU^L!E&Q^#7:X;[38I#6,?U!#.2!]1!@5&>J
M/T O_:(KGG1E(L?OQ4+=F;^6,YIHJ3 3("$Q CC'''#"B&V!0+-4(9+&?IOQ
MHR&FYN#LM?>V,D:5D'T3-G9 >F9I]()GZ#VG'S+]$S..E ^=C;$;X'52,(X4
M/)MW<7SE5<1LG]4C*RQIR+U:Z>7JT19&?.+SXJ':<EEV.&%S,XM'<\DG_<42
M0&N[D"\71J+5^IV1JLHYDIC'!$IC!R!AQOG)**":2^,+9=)V0DEBX=4R-*QX
M4S,IC78VA-[H%^TI&.TTO(E:':-:29NXNJ_F350I&EE->Z62!7X/W*S:Z\WN
MP!;Q=2:V+WE<8/S#\LF%$NXU*.8" WN&=2[T*#UWRLO%LG5 [Q9B^:C>U]E?
M,Z*3'.>9\1*15@"G- 9$:PP@Q5*F2:83+GT*-L^.Y&7>1ZC6K'O)%PNSE*AR
M7?$]+]??U,K\R$H=_=+DQ_W:HX;S/-R.>]X0( Z]M=V3,;IK,&O$#,@X=Q&*
M4!O4L^.,NP^]I.[1=O/B#5=FJKSYL?WK_U.8@5;BVX_?C6V;5ZX$C'$>:R%
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
M(+LY#*%@&]@):(S"E]HHU)(>,#L$Y>:ZB$@X7J[S0XW-R751Z1-\7)?OZ;=
M_K9<RK^*^7R&THPSCF.0"H7,8D@20#)CE3.50*TY5$AY+H;MHZ>W\+62^=F
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
M9SM42UFA,L2U4@ A2Y,:RQA0 5-CVXRG1'6>9\2KXOS<0%,S7JV<T4Y0[Y2
MTX@Z'_%?C=/P1_8O(1J"E>("$.&.TD\/,_;1>*>R)XZZNZ_W+RJ_$WIUNY&%
MF97;]5J5=8NG#W/V,.,8YQFS;2LPM:5<3  .4PP2VQS)_$_,.'2M*C\_S-0L
MP=W;#Y^C1M1H3];("NM>5]Z!:[=%"(?6P/:@'U!>I>67<>A56][QV-&*RR^K
MME]=[G!US_V.+2.\*\N-DN^JR&]=G%/'8-H 3-U$[*^%^?J^%4\V<6:6Y9E.
M:((!CY&Q#5@Q0&2,@89,QCP6-)/,:^?33XZI&8\F@-I&TV6T64@;3/UR?W\%
MUW'/.7+<! V/_-"A\*H4ME8AJG78%D36:MQLP]EM;\%6E2J1,.#^Z#HP0^V4
M>DHQ[I[I.JB.=D]7/JYOR:&MPJ@>6Y<]IW'"LSR/C4GD%&"$.2 Y9T#15 B:
M:)9GT"\;YN40T\MA>=N4HM3MI_ZO^&\Q2G<MOOXS@G%\$\=Q>^[(-NMORU7Q
MOY3\SRA+;_(D;7]3U)^P3>I=[O+N(U;:LZEWQN>MSJD2>!/95[[._LWP#<IQ
MKR= WV+(%W/M9E^OF;^!#6<S<4W?L$JZF\:.ABQZ/*U_L%+'%X\?N<#QM'+'
M98UGKNO;@?"@S:'9%JXV;-[\LU!E/8>S-,F18ID$"2$(X)P3P!*6 *5(C#%A
MA.6>K2K<!IZ>B3)R/Q>EW9Q8%HV_VAZ@UDZLU'JUU,4Z,A[;ZL$8C_4R$M<4
M33M.CIOU" _XX,Z8 96M:AO\_OM:&0=8'G=?;12QC!5B95M"51.STRNX&?(#
M,EB[0J=!1VY7Z /$<;M"K[NO(W;_RK[?EJ5:EU4SART7ETZP%A1*P+"0QL=B
M&>")-#X63&,<:TE2Y16C[AYN:EO,+2OYFGTWCHV5UY/I[ *\;H8I'&B#'Y8U
M>%G:]EK4IA'-(&1G;K@$9FT_,]BKL+5W*WZ.I?W"72-GH]J:L/6/NX61HB)U
M+#_9OI]?O['%R5XS+PJ)JU^^8VNUS;8U)BLE$JD$))I:_ADL 4=$ ,83RG+!
M>9Z@D9J&A=9M>L[>$5="U6TLDD;J2-M<_)I/;=MN>J3DUN OE6-\;RKR3FA-
M") \6Z,3[<$35?A$:P-05P^T(UZ)ZI+(0K57*3*!M-NAYO^UTW2#Z_5SI/4.
M-9W!TH '$]#/>2A7Z]EM6;![)@I=B":+@PJSKX $@EAC"G"LL%G >0:0RB#-
M,IXK[M0^^.33I[;%L )&C81NB^-IT+H7J*NA&#K?90^%@(DNG6IWV49SXYY=
M-/_:V<33SQS%+G6JT]J&[HOZ'[T4Z\I0W"[D03+P_7)>B!\[%H ,<TEH"@'/
MJ )8" FHECE02.,4ID+*//%C?W0=>FI?]G$.N_\9B"/H[J<CX:$<X=RD$;H*
M<QZ(?1/5@D=_-G\.0L+@CUO \Q;'@4<_B?$#Y-09C><31B9C.*32M>E_A_RY
M<(9IAEE%O)YK:AM&I<9-@=I8NIC&2<*PU/[LZX.(.C7+>/OPL*HHR5[RKM\<
M4JVW%.S^&<(#3KM').#5)W/Z6_N7%.M6X:&IU0>=EM?F:[@LZ,_!U^ ,>#"^
M!O<1_98BP>;?^^_4/ZIUW4ZU[5+RU9Z<KV_%MT(]5W>:7^CEZM'V0/MJWK[R
MVW(NS<^$Y3PD DF:9K$E7^< 0Y$!FJ4<$*A1RE&B,^S4K.P5=9C:XE7+'K&=
M\#:ZW4H?K5OQ;^R/11=5XF3>DNXE[2>9^RFL=6\ZUSK;/ZMI:[W7"ZIYG_8
MB?80B;[NWJ?[G^5]DDU_MFJTG_V].E#F_^CWR]G;FL#,UFZ8%:3RK2!*8.5?
MO:9HHSA>$\"^]<BF($H/5^W30KW=F'WHHUHUL?4\80)E+ =2" 1PFJ> 890
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
M#S0N1])%A8\HDB[?,5PRV<?E0BJY,9=QV_.^"L:=-GL5>6#"4&I,209BR07
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
M;/.8/@@V4__ATRA#@@G!81I$BLYSAC6=*W;',I4T2[GDW.XP[/*@8V/IC:"
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
M\ @1PNQV\09CCNVST(H\ 970U2';1FRU[5,#.A8Y-9D ,V+W#&O/%/UY,7^
MGXL7G3MZ$!/DO="I!3*>:-)DQ$$)SP*"0^JRN=6AJ-1-%(18/[L)AB.IXI,8
M"R@SHK:L>9A#DD0,2LER(C*>!DED7#+JX.%CHQ4M7<4H%K6'#O'J)H=K4>B9
M!38 7(X$O(R$18VE*Q 9J(+2Y5?#KB+2&8T[ZQT=WC-<-:,STN[5*CIWC:_N
MZ#>,Z>R*\IM@HGC12;;3.. 11316M)2%RA(*8TCR.(&"J!VV(%(&DDWGU?Z1
MF]E")L,:O9VX?CMW!^]QE]S(J#O+-$).P+RC[9([Y&:VCS<8W[2K^0;6K=!]
M]C$_#U%OS<M/#/G&'<O/@W"Y37G'O?9]89JB1Z]A1.^+E7KS41#)F.88ZH 5
MB+C@D$J.8)8+@FF8XB#.3)O"'#Y\;(90)90.. ZCG^C/;;6N5_.>,$?H=?/&
MM9CTS ^V<%CU@SFGMU,SF*.'#=8)YIP:NVU@SEYCMSS+Y4KWARH7LX+KKVO5
M7497)_M1E%/=:)+D&8$!11RB) L@141M7Q*2,AGE B%DLDR[!AG;<MV5$[2"
M@C^TJ(8&?">DW6O7%U ]KV$GC(P7L@D(75]Q=?_.%US];;NL.Q\]R/(V4:Y=
MYD;7NE8*?*X/8LL[^5GWD+J3[Y>"%ZNI#"5EG'&81)A!1'D",44)S F2B.9)
ME#+>[@/N;2H GAG080=P/\2I:".MV@;,2%/);_4H@!JN^GJQ2GC;\GWG0#?;
M"5R'X5 %]EH9-4J5E/J']]UP.=3*NP"%M^)WY\89N)K=!76/R]-=NL$QFYT\
M%RLRTWGQ;5=)G3-_^_1,BJ4>[_-"]WP,8Y8')(4DYSKZ/,60!+F$82XR*H,@
MRC&QRF8W&75TAL16:,#:_JI,B3T!Q49PRY1K(_3-R,0[IGW;'#MP;MK5OJ_@
MW,H,M- >$ZYM,/*5<&TTYK )US8P'"5<6]WL&&RDPU?J/D4?ULNZ&F>Q:/H7
MG79/3VF8)$&0")@)[8OAG$!"XQ3R5"22YX*+T*KCMH,,8V,L+7U=RECJ>DNZ
M34X=&+2>J[D XA]KW<>U4%<H0_1%@&=U=UD=CNH[Y&(I1;%:ZT9DND51U9:H
MM.Q+Y#*39GS7\_STS'Y[#=[:?F^3TT$^N]';1.HJ%9\V4^,QJL<=3U_Q.@X2
M#!N)XP[148S-%8]RX]2[9[%4SYD_?-8'PIMVX5/!<(P3F4+*!5*\F1&(XT#
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
MJ7W(6F8W.3KT% O>R<H_I'M<%+P*%ES,V]C N_F.WW&:"DI21C-(8Y9!1),
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
M1T_F4V#&4+W VC-)-3*#VRV<<PXV8H-*[EYL)6NT//&5^;B#4I8U'(>L9?\
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
M9U(LJY"+15E.$=?5LW(& TP$1#&6D,@TT74Q4)S*F'.&;38-IX<9VX)NI9R
M8B,GF"E!+1TZIS$U].!<C53?+IL-2%L1P><ND.P=-)T8^/+(G!YD6!=,IZ)'
M/I?NJ]T(X*.4NAWHB[B=L\63N"<_OI&5^":T!L6LJ*)[ORSF7/"UNDQMEQL/
MS]WJ42RG>9#D,442,A8BB&@B( XC]>$G.&44JX^^L.*)JZ09&YU40NFZ)4]D
MKA=)H0/9[*CDNMDQ8YS!,._;ZFCU +4B54<KK0K8UZ5J4+'5IG4T3T"ET 0T
MV6O^Z,P+P)Y8[SI9!B5'+[ =<JB?ASHD&9UR'54Q/E^7Q6+YM2JY]&6Q^K;I
MCS'E'%$:ZJQPW9T4Z;I3A&$"XS@A"8Y(EB5&![=NPX^-3/=]K6SC:R5:B0EX
MUFJ NG+5!,P7*[#M-&*1:F,_2]T<VS_VO1^U-+#_;=_%?5/#7FD OC:P*R7
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
M7AAM6&^LF>I''EG#V[QV*IDRG-$\" ,HJZZRRIJ">1QSF/-8XEA@PC&?UCF
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
M3R_]&38.;,J"-)<8PX!3#A%/&<1<"!CE!$<X"TF>6CG_#<<=V^[ I)F :\B
MZ528D4T/ /?,.YZP]=V@H:?0!--1Q]2DX5(P@^WMCD5'E176A/\)P5/U,@40
MQ40J5@IC2#/!(!%9EJD_4AP8A34</WILQ*,ELRPANH7)C#'<E!]@G]]':[HC
M77U5_=P^>-@2GT<*'=7S/+["OI*36M:EVLEP;<%7 0M%U>=2UZNFDG#)L81)
M&(9J+>($8AEFD&).@E!F&"7(M*[3^6%&MRYW) 6MJ):1T!> [5Z]_N#J>R6[
M(655%^HR$%=4B>IX^& UHRXKN%M!RN!JMT_P;XN7RL=Q._^^(G-.EOQFSC_^
M6(DY%_SK<L'7ZLM?>4!7KVW]C+9ZQK?%;/9IL=0>[&D29P%/PA3**,,0D2"%
M-$PHQ#@521Q3D4>Y7<:8)\ELULTPZ62-[.#/1GB@#*GBI5E$6G+0B&ZYZ_ U
ME68VQAM,3\^TUFJDSY5;G:JSY58KT,Y<JU>=QD9F)TO+F,ZEM<7C&7E/YI(O
MJ0:UM3Q#>6BH^7Z\@_OYX]/S;/$JQ'>Q?"F8J"*,Z&&(TI=%Y541O(I&*G?_
MZ?VB7'U9K%[%ZIM@BX>Y#DNZ7[P3V[]]$3]6]W^*V8OX3>T4'Z=IF$=(L B&
M)(N4]1ADD$220DGS(,H"&>7<J![.VX@_-JOT^VK!_@XKE0';C6%L&AGK4"6J
M75RM/IJ]YMKYN:J4 D]:*QO7]O!OC('W>]3O0<_?I59WT"C?Q*O2H[C6"=@@
M4,>OEI/]N%>-@KIF!10.8*OZ!-POP#NQ\QN@T0 U'*#"8]0OD(6??=0OTD"N
M^'&_4':^]3>;ST[W^_!2#>>A?S/$]YSX;R?%M<57/DHI](9/;'R W]2N7H\[
M9\6LJ*0[+,<2)3B(\A#F,4X@R@($288"F,0\#WDD6,R%58K.%<*,SD#:J2JR
MT0;L=*K3"H%]C5RKMSA,G=EF>J@)Z=E2<9F+@<J^N./JO1",@RAO5!K&';3S
MQ6*N>*:[D_$@W.NH$L/^+W:NK MP'>[-U=_K/A ??["JSJQ6H59LF@N$>:YK
M*Z0$092JGRA6/R6IE"2AZA<)GJ[,@[6&%=^*W0>(^])EYXO3E;3/!HO:.U<'
M?#W,';CCG/0!G,2G@L&WRH+Z$CWQ![_<OZ-&X73-[PT6H 6C_C+5</CU30\_
MC1[]WP,*/[B/??B).>7'?P,I7!L$/SV))2O(["MY%LLF'D7M/"(1QSHXF6<0
MY8A @AF"89XG.,$XS:EE8^ 3HXQMR[$5$CQK*6T; I\"TO"[<"T\O4<&;)"I
M!.PCWJ<+ F\-?T^-,7"CWPXUCQO\=EWL6H'HO="!?[/;.1<__D.\3AF1(H^3
M$&)!$HA0RF#.@P &"2=9% D<I4:.G;,CC&V=-_5S&BE!)290<MI6&CH$LGNM
M>X&G;Y>$+3(.%87.:']%):'#)PY<0>B,0L>5@\Y=Z%C[SV##_66A/=)K=9G:
M>'^L/8O*\A!J,&V$?! O8K9XUJX)M;^5+"$DAXFD4GWQ90Y)+B6,N*0BBED:
M(ZN. W[%&QN%?/LG\O3\;Q^JA"5EH?'"=GOJ>?;,S(RWFY.^><OP4+)R?&W5
M XU^U3ZTTK#:?^[H6.TWF?#92*J?2?!5CM&O<,.6<^P%V*-RD/V,,LH0H-OY
M?RF9[]6[)=3W(4T0H2%4WP$.$0D1Q#%)H:0XH0&G><2,VH\.+_K8OAWVH3\K
MK09X50J53=,2J5ZU^<.H@C=V7Y911/XXO@+_"Z-^;N= 0P$J+$;[THPJVL?Q
MY?E?'.EC]A*-+<KGQ#R^<83/KD3_FZ)[3B ]<&3/*0FN; SZ[O4W071Q&[VH
M/RW%/]9BSEYO?A3E-!!QEO&$P235^?94UUE,HPB&88+"G%&61(%3?]#S8X[-
MDMF1$VP$!7]H45T[A'8 ;K;']0QCS]: $X+NK4(O8^*[8VC'B&_3./0R!&?[
MAQK<ZD8WFV['GQ;+]]5IDNX>UWB00A[B.!(AQ*GVQP4R@E0*!"FB01*0 *'<
M:.-E,MC8"&8C:U4CC"_6="77L[;*F.616R?*9N3B"[N>6>7[Q_>@C<R:@#""
M 9[L-E&O10=:]AX\>28@>:*9SJ$&Y1<3I0^)Q>@>1P.FF!<K\;EXT5;12KT;
M^B2J:J!>*A8C_ZT&G)&RK+ZK6<ZR(& 48A0G$,6QCD>6$L8XC FB*! YMS)D
MS,<>&]_4HL-*=K 5'M32ZYKRE?R@4L#-T+&8&$.#IQ^X>Z8HKTC;&T3VF/DR
MC"Q&'M9 LH?DR%!R>,2U61<7:_.7YXKS5\'(4YE%*6&*\B*"U2Y.! S2, M@
M1G% LX00'C&W%(PK)1L;->[F )P[;=HK9+[MP$&/.W TV0&6Y.EOVLVH]4TF
MLV_;\&@>NQNIE)V=5"[.XQ6I'9XP]Y[G<:U<;Y3TX0G.\QD@O@9P<(5NA?A5
M%UWX0%9BLVL_[,0M0YDEDN8PIE$,$1<QS$E"(0D8"N,P3L/(*+35=N Q$WHE
M/-#2 RT^J.6W\!393("!<[ G6 >DUM.(VB3%70>RA3.M)[ '<H7Y!=W.?>6
M7*?SR>9YP[F.'+3<<_RXW-]?2.379;%8:C_1YAI13@7.)&(\A>IMRW4W^0B2
M*$UAEN!,Y)EDDED=@;@*,K9OA ZC6RW7 JZ?_8<WGIP),\-\"'S[C@,Q#EFL
M%*E][]M+1?E&H8E=L X8A'A2C-&%&W:!Y1)8V/D\%[O9=V=#]4I^52OD45U?
M)[)-.4X$"6@,LR@((<II!#&) TC"G'**!5$KQ=S<[EW>L3%P5U-:G8CUW$BO
M_Z+$M[$F^Y][$TM_5#/:]P;!I''M.Y/&M7<G&M?J[P%H=6_RI,?U/MAL2D;U
M7@RUEQG/^V&Y$1ILMKKW3_V+,>"V:S!,]W=KPPWKFK ^9U4BG9;K6U'^O7:=
MZY^FB8A8HMX*F. H@8@%$:0DS6&.&,))A!*>2;NT];-CC<U0:&(ZM&A5$M/M
M_$5)OE@JME@_/\\*M?;WM+$MI]*!NMF>S1.6/7^B]Z2LT-R$R]1_.=^CTF<N
M_$6HO&7$GQ]IX+SXBRH?9\=?OL6-8NY6CV)9U0 7?*>1U_OU<JF3+0G)HB1@
M.1249!!QF4,<9PAF8<B#G.,\Q)E=3?SN 6V6QS"E[BMY[0CD J9F'.(/IYYI
MI!(4-)+NM^AKA/7'%F:@>"*,"X,-RAEFBA_2AN%=]M4UWA>KUYNE(.\77$RC
M-$P3Q@@,>!I#E,@4TI@A&'-)DI!0QF*CN)+#!X_.[-#U(K1P0$MG7D%C#ZSN
MQ7\-!'U;"V;:6U7).*6J4W&,O0<-5A/CE/B[I3!._KMCV'R]B+\N%U*4I3("
MR.R3V'Y29)K*@(4A3%F,(8J25'?9E3 56 @4I#B@1B>/9L.-;6'NBEF74U0V
M_WI6M>:6PK:W[@6HS;[>_@#L>5FWW^T]#+6H/7R]S4#Q%2_?/=BP$?-&BA_%
MS)O=Y48HOXJY6)+9S9S?\*=B7I35YN*E+>$PY32B(DUBR AA$ 59"HG@BE$P
MSRA-A61Q9&?X7QAQ?)9_(W#%*&1/9#M"N02U&:-XA*]G2MG%;5_6M@B-/THQ
M1,43IUP:;5!2,53]D%5,;W.T4ZH0^$UWZ"RF.8XR M,@3-36(,TAEC*&F!(>
M\(0RDB,[%MD?8'RD<?/]^\?[[Y86QSYHAA:&,Q!]6Q1U6DL?S;%/Z^S+8-A_
M^+ &PDG%C@R"TU<Y%\/=NCQTD=Y546?[?BA*-EOHW-_-&RDB+!@."40BU''$
M.(0TQ0)FA 8YB62.;7T-QF./;:^QE16\4TPJ"[-7_>HI,'4\] )LSXSAB*E+
MW5U;=/Q5XS4>>>@:O;:0G*C<:_T(E_BMC^_;Z-HP"K"N,;=\$4T'2C7H>CEO
M$]R#D,=9D(90XCB"*!0!I)PR2))$QB%#<9B%YG%8QN..C:K:5J_+2D@P:PZ
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
M$5)*9Y_/9G5V\E^6Q.1?YTL,LRJERO)S+(MEG9TS2<89[:L]PLW(TZ@A:H-
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
MIE_$[:6A(V_BU[-\NA#Z Y)C?5E+&Z>S3VT#YT=_]"#A\O-,G+C72"8>C4A
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
M%=4[$#]@=3!N5Y3R"1,,K?4)HD[D=[)HP7-AP&)V4057K#XI$!^A<=SW\C&
M>*RBN@-B'>TS096%%S* \8I,24<'P2@-T:ML&1.<-U^Z^)"*<5_(3P*FO87=
M'5Q^[%/11AA/L9#/A4(7U/25KF-X=> 2)3JC6K=./D[)N*5@)X'-04+O #KO
M+Q?I\QKVU^^X-\?G;_3KE\LO5QV<5W^^JF5L3 M+MWKM?"<&@T>*L'D"[3U+
MKFCCVF_ZVI?(<9MQ!P+<L*H:^Q%KL^MVTS4\R^_BDG[Z"M_.Z@[W^>+[J]5U
M_\YO87990AU+AXN)3X+8R @YUWT^?+U43UL0*2LF%>.\W!N9O6T(^V$$C-N!
MVQAJ)]-$%PODKGLGW\[2_ M%S=F+%(4'$;4"I6P";XH'SK2E0]T+'EH?;'<I
MV E*[DR@U$#(739L_[&:IW]]GE^0,I:O_^=RNOJ^_LZ[0O21Z#[6]667BZMO
M?L#5=+'.6+R_IG_]_75._\N7^6S]NR-J$H8CYO@:AA,)JE'-PQ6%-XEJEG7)
M.FDPLKZ@)4)H4"6!C(D@:IEBKG51PUT*VNWV^N,SF?]/9(%5E%]QMMR<*(M
MAK[V67_Z_N/O;/S85W7SWM6CN-9<HQ 23%!(#FVH0],SQ<]U96V4D87F+2;-
MB!_W&?@(3&W?_W5*=780G]#UL9SF::"#(JS9KP?!.N<;N(C"Q$(W":>;Q-#-
MY&-A8# 5NJ=B,CRTOZX?)Z:7+6$G!<?#B[Z!IGJ W _R?P]?Z,N/)+XE63")
M<I-E=BDQ3<1#-M$#N;8.8ET#D4NQTG+M$FN](^%YJD8&81OUWP=56UV,'>2^
M)V=XFN[X09LR Q,L<C0"D#D*GK)5X)SW8%A$5"8IB>HY;_#ICQ@9'HT5.6\N
MU0Y.GG<4W;ZZN)BO'W?>?:VRV3"2&0\E<;(A9@S))M4"%%$@1\X$9N\5VL8'
MSE9B1EX2-@R0VJJ@ RP]ZPIL\P1^A/TQ*R:T(,%%K _8,8/C*4.P(D;Z7BZJ
M=<KI>*I[66$WJBMV6MUW@/:[SP9KYI:O+E>?YXOI_V*>6,ZCP#K97 <-RN8
MD8X$\)II30Y)]JIUZ=O3%(U\&9\8'_<3&>V4U<4[\F/\O%TN+XD7I= $804$
MQ%!C?@<^:0$J<NED0F'S*8!W1<W(1V-_H#M 2=T"[MWE:KD*LTS.[T2BK5-1
M23I1V;J!3M1)(P8L"S9GSX.SK</39T@:>7M??] [5%U=X._VF_STVS3C+"_?
MXV+-V2^8+N@_-?D<4\I)0V":N#(B@#,^ /?1,BVX,\W7KN]"U[@E3",CL;GB
M.G#];@>$ES52V_C>F]/][>Q6@#AAAN@/Q@*QHLBW* AD79&X9+P6[A1NFS\:
M[T'?N(52(X-S,$5V -);AO<^+-XMUJUL^1_AXA*O[6^2&0M"!@M.8UWGD!2)
M+0G@BGM1&/+@6[=3[$#6N*54_9R73=36Q>U]R\Y^GL^6= LLUE*]'E3W[HZA
M%660>24!<V*@BJK#]=$"3ZX(GA#)0Q[NQ'R>P''KK_HY,ANK\IQJ;S[@UTUI
MY/M%;0C]TKZB9NM'#%8GLQM3PU2_1/32>A$A99= ,<*(X]Q K/L"0TY6^]:N
M>^/JET<E2$?V=$Y^Q)OY(B&?1&M+J/-M+ \&E @4]J/44#++P87D?6X]P6,7
MNKJJ6=D'"0\.I]9*Z,"/>YRG'X^75Q78?!*\8*9.4;(U1:1BK9C,(@&+-L0B
MM4'>VH)V)&W<1\#!X76<*L[DUKOZ]>VL]EC2-?_^@N[XIG?>4Q\PQ(VW,T/#
MW'>B1&^*Y.03<7*,%'T5'(O@&0]!1F&Y[/R^:Y9V%*6^1EH#R#E99"CDC08F
M(-FDBRK9:-9Z=<W+K/;<!U/#57ONH\X.KM=J^+6J8UTW)J+3G/L$Q5DZN)%)
M\"('$"9HIDPI+K3>N7#[\U]*3>=>$+B?N3A4'QUA:5,4A$6*X'.&8FT=!T3!
M;_1%@,^J.$[6J'/K,O:[%(R+I\,UN042!XAU[.K+5X)Q?\_56!M*Y6E3Y<4-
M>NY* *,,G=VQV'IB6XA):^0VY'(_8;^MG?#Y#^L#$8<H<CZ@5#M B> 4I9;Y
MXDL@ACZ&Q2=<+:\K2DWQW!0%PAL)=0 8.(IC05*@6FP2,A6]*SZV?\RX05I#
M9#229 ?7R=6-2G]Y?8*Z^CJK- ,M6>VL)A?/:YGI!%7,:J%CCJU]DSL$O)0J
MQV.<D\,UT@&<#A?<#[9G^9ZE,ID$,I1 /-7R)3)7;YP&R8A[KW+FJOF+Y@!\
MC'LO'@&K?<MPA]9Q!SA__>7KQ?P[XE5WQNUZ^B(+>NLRR& <.:$<R1T@\4;F
M2@H!F?>MP;J5F,[+<0?'R7P(I8WMR-WR/-:"N\7-M0\2#9JDZCSRZ)!\$%8@
MJ"# R.B4QRSR_1JU;5U7SWY6Y\6WIX+8$)KIX)C[!R[KX(SUE6%%8B[% LX5
MLA%>$MF(MY"-<B%:'5)IW:MUZ^-'KK3MPC,\5!O] &EC884"(;0A@77,U[UE
M&KQ4";1*BBP,0^2MVP?N$##NO7BP&A^'PP$R[0 06^QH;2AD2V1O[V:X.30]
MW4ET[#+((5E0DH040JD[@BSSQ@<9FM?][T%>%V Z! 2[N?5':^0LP/;QS_GU
M^XU67-CD0"1%(BQ>@DM9@4T9LU4^>FQ>XK [>>.Z6Z<$VV$:&7F]R<?IJCH)
M;V>YMB%<;M9XA. QU4->JAI=!'+_0H@2H@K,\6)S+#M==\^L-GGTPT?N"QG5
M;VJCD=X@]<_IZO,'O%C+;_EY^O7C_/5L57<U7UEE4,ECR0@&,X49SBDZE7V
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
M5U1KYL]TQ,3(%CHJ!,]K;^P#\=9&I]D2VR^0?>Z3!MLDNQ>+PZ1@@Y">BUA
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
MO#..=Y/1W\+#;N;PGXS^ (CHP"*&>WU?)[\V+^V2)R=XM&!-76',*.(*QB9
M7SPK0FLA6V<U3\+8;K;S4G/]_6'G3,8@OJ)+],L5>TVG(3[R<X<8BO@<^</,
M1LS,:9ZB@A1C?51%0FJFKW)V+$:A;;"M1[ST.AM1,2.RY@6$4W5.?=TX19$'
M9!9E#3UT*LW[O5_D;,1],#7<;,1]U-F!RW!W9!HC_U\8H<!;[6HF74.T@4,4
MUF7%BPRB=:_$BYR-N!<(GIR-N(]&.H#3X8)[8C9:70]37)UW*FIS1DR%G :4
M($R2'J7#S%I?%D/PT=-LQ+U@=8K9B/OHN .<WZT*7+M/UVLC2T@DV P.F:"0
M$3,$[1+8.LHH>F'HBZ&BH_O$=#Y[8G"</#4G\6"E]8:^ZT%).1;E-((//)-@
MC  7)05:,3,N,;O<?&S0H9,YQRL]&15Q!RBJ ZPU>):0$5,03 )J@61=$L'5
M+?;1&D.1I=?1=#/-Y]>7M@;M&%?TQ+H_9[2_"=/%/\+%)=YZ3ZD+7G'U>9[G
M%_-//^)4+7)@20O@R9'OQ;B@.%5'2))Y[ZVQ*@_2D#XL6YW[&HV1VLI0!H)-
M%]O;F@JEKO-*J]LK==9SP'*2R5I!5VBN$XV,L! D"R"Y8U+;S+'Y//(3L'6F
MMC04F(<TM@:XZL?8XO-"B?L(I99J\HG/.CCA#+D,K/;3U,Z:H"2$E$(I,M,W
MFF^&'XR;S@.4'DQK?!3U8U&M=%7+EM\L$-_.R%?%Y6I]R!CI2K*F0!%V/<22
M@_.9 9>9T;<\R:7KR^LQILYTK-TY7EU'8ZJAF0V;8O_[;'&WG.#!$;79]MHV
M [__QPZ1H#^2^8'R]Z:@"TQ0L,05P2S3:8[<0QWJ8(RU9 2^\='5:_Y>))-2
M3AZTB &4Y+5&3%DPP3G,Q>M08NM3_&7F[_? U'#Y^WW4V<&#U=VTG@\I"!$8
M.$&NE<JUJ%W5IVM&\F/*&]4\^?0B\_=[@>#)_/T^&ND 3H-D4"3ZR# 9<#%[
M4"%X<,H[H(@@>8\Y!O^?W8;[Y>_W@M4I\O?[Z+@#G&]/!>L@0M3! K)@0&&=
MFVZ#AFP9RXF3X*-M[=G\&^7O]\+)SOG[?936&_HV+(0HC!!DPCF6>N44":Y*
M1S.%: 6R' :M&WFQ^?MFB#M 41U@K4%FS&N&=-=$B,JMAR.3=166@#M+#GJ6
M)9IN$I8O+G]_C"MZ8MUW@/;!NE@F*243BN<0,0I0OBZB2Z6LI^I;.@6\M'JH
M\[DU,YW[%8U1>:I&I[T@TD6*X\1CP[RP61,CD%/5FO0:HJ3(Q1+_F@D,"@<K
M4>QG"%U_R<7.[>IX,(T_@^XQX3QXQ[\GG$?D\OVV7#[.?\(?O_L=_UI]_!,O
MON%O\]GJ,[F]UA63#>C,R>TUA?R&VM&?<](E,5><WVT-T,E)/],4XG%6= 8H
M&7M*T/#2>3O[+PR+CW_.)T(SKU,L4#@GK]N0U^U8TE"BE=87G6/>;0'X"8D^
M^W5:'=O-8<CXM[$8,@&<)%19FDS^K@^VOD2K6ABA:XN99=8';JSJRV8JV6>_
M4:M_J]D;'?\N=O-F?KF89"%\D,%#$'7&C$2$ZKL""YX[;K47HA='[0?59[]6
MJWNKV1L;9S(NY6K4T@?ZV8MOZTE+;R[K'-<ZBBS,$C8MX-KQLX:HVCJ$S6%*
MM9#IR+3D8%RL#6!U6'LMP0TB%K( IZ)IGM#LM%3+Z%12<!)X'8VD0E2U.)(#
M2BM\Y):NH=:B>)FE6OM@:KA2K7W4V4%NXCHON2[@$$YZAB%!K!&$XB9 1"W
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
MW&JU4YZ-^PN^@[[QG9+ASE@6M 0MB@.EC ''> %G8Y:>JZS84",+CJUD&*R
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
MG%M[L5F'/WN-.@*S]55'2;)A+6H,;307@9O2_/5U+P+'/?=. )EC0+J7]KH
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
MY,3S?S=;OQZ'=JGUTA @K*^:\H6!4 ? R &=RH%T;R/VDBP3VP/VY%07]4^
M1AM*>O]T/:=N;X+V33-(H47$"E"H4P--MK&Z#:CZ%TY[49IQ#[8-X5P=I_@I
M4NC+]4(Y$Z[8W(ZR>$=M.E@/T3@)I6YFC"7AD^M=:72;/!-;Y8[$?!>5C@7@
M_,=]UK]HWR+=\5_^]#]02P,$%     @ )8!55IL<+JZ9 P  5Q8  !X   !C
M86QX+3(P,C(Q,C,Q>&5X,C$Q<W5B<VED:2YH=&WM6%MSVC@4?M]?H;JSV^U,
M? ,G%$.8:8 V;+,T \YD^K0CK&.LC2QY) &AO[ZR#=NTE)22F>YFB1\TMH_.
M[=/G(^NTG_7>=Z,/EWV4ZHRARZNSBT$76;;K7M>[KMN+>N@\^O,"!8[GHTAB
MKJBF@F/FNOVAA:Q4ZSQTW<5BX2SJCI!3-QJYA:G 94(H<(@F5J==O#$C8-+Y
MI?W,ME%/Q+,,N$:Q!*R!H)FB?(JN":@;9-NK65V1+R6=IAK5O%H=70MY0^>X
MDFNJ&736=MIN]=QV2R?MB2#+3IO0.:+DU*(P"5X% 1S7P(N#IN<UCX,:KB4)
M'/LG!-<;?_DF2-=,KW247C(XM3+*[10*_V%0<QK'N6XM*-%IZ'O>KU8YM=-.
M!-?&GS3ZU6UE9L.8AEMM8T:G/"Q3LBK5M3@63,CPN5=>K4)B)SBC;!F^B&@&
M"@UA@48BP_S%D3++8"N0-*DF*OH1PJ:)KGQ:5!$WC!E&.:PS\&M%S/W;E$ZH
MP=-W_"\#OB^9;Z<1&]Q!_CMYC*_.QH/>X/5HT!^C]V]0=-Y'H_[;P3@:O1Y&
M/Q2]QA,&ZPD3(0E(VV3!<*X@7-^T"%4YP\N0\C*84JF583DU')D(K446%OR8
M@]0TQFSEI/17B5?4:3:=AM<HV*,-RIJL':^(Y93$<C79E 6OG+I?WRKV''^K
M[%ZS3M/?KKFWU;H3-$YV,NN60%1@&+A5COFI5;?6"CDFQ)2&L);?(M\@?&<)
M&20;B%=@_W12FH)0148@%A(7-3*<<4.E8I;Y[+@I3TLTQ!G\P\T5+H\Y9:OS
MVW/_Q&M5X_\IL_L6\X^9I(K0N'C_1<[?8?($QS=3*8PE>Y5#' ,D2>L_B4KP
MS?7NFA!NC2V],'LQBB!.N7$\7:(>S(&)O-S3?Q]B_K=)Z*79P!UTH8FS S6^
MBXY78&,]S,9C0#BE'#^,5DEY/:JD[])*H:MW1R5M[E:7_4;T<!.;XUYL_FI1
M]F+SXUO8/I\RS,F16=*#*Y6#7A==2G-@T8 N:$;-,>>I#NX,WX 3>J!U\)TP
MAV+T899BCKHI3&F&S@4H_%1W=@9R+&8ZK8 \N+I3<FA0G&XYKIHU1^8Q?OH)
MVQW#*UY4:S36IG:KPRQ"9Q(KRM 8Y)S&0A7_8W@_"AUF!3+X?:1LDSMNV3KZ
MP:[;5UW(7%1MV% ",Y_X'#;ZDI_[665KRONL@B=*L)G>KK*MP[>UR;D:JY9K
MV?SM? )02P,$%     @ )8!55B]9"IHN P  ? @  !X   !C86QX+3(P,C(Q
M,C,Q>&5X,C,Q:W!M9V-O;BYH=&W-5FUOTS 0_LZO,)UXDYK$B=.DS4HEZ#9
M;*,:11.?D)M<6HO$CAQW7?GU7.)F=+!*((%$/UCG^+GS<^?G[(X?GWR8SC_/
M3LG*E 69?7I]_FY*>H[G7;.IYYW,3\C;^<4Y"5WJD[GFLA9&*,D+SSN][)'>
MRI@J\;S-9N-NF*OTTIM?>4VHT"N4JL'-3-:;C)LO. +/)H_&CQV'G*AT78(T
M)-7 #61D70NY)-<9U%^)X^Q04U5MM5BN# EHP,BUTE_%#;?K1I@")EV<L6?G
M8Z_=9+Q0V78RSL0-$=G+GH@'.1V&*0 +\C +@R$+@>71T(]IO/!'_(N/)#V$
M6Y_:; MXV2N%=%;0[)^$@1L/*G.\$9E9)3ZE3WHM=#+.E32XGT9_:]HPOP0S
M<&L<7HBE3-J4>M:U6TY5H71R1-O?<;/BY+P4Q39Y-A<EU.02-N1*E5P^Z]=X
M#$X-6N066(MOD(R073O;6,8QABF$A"X#/V@XG]ZNQ$)@/9GKWR>\GS?72TS=
MJ J],.P>]11K#?IO<_?I;Y&?*EDWFE$Y>2<SJ  'G%[!4M3("E4T6R\*D9)7
M::K6TC2*.A.Z/)CHH<0>.,^[L_YW28</)GT-)-WE;10Q*R!"IDI72O.F$\EB
M2S3DF+U,FZ46H=N*[ "UP09K>J0FSR^52QACCA]%03CH6SL.6#S:V<,!#;KO
MHY .0FMC^X6CJ+-',0MVMA^Q@'7VD$8=)F 1BSL[BH8=GE%ZAV<A&^SV"D+J
M4_3E,K/SP= ?Q2\(TC]3NB0?G6&[=I= ZS#8![!&%FJM,7FLC2%9>ZV<P4*O
MN=Z2P.^WETB?;(19(:BN(+TK:5-A50CKDPO)92IXL5\Z##Y%I=SV47JIVY)I
M'"'/,8RX 0EU"Q*-C/!^;$(:K0JB;D#OA;3L4)GN 7T]K+V?6G.AC%%EPE!!
M>\T:X;3B68;1G0)RD^#Q5'_]HOE-W3X]"N/CNAV?'OD1/7X_NWACK?/SV7_2
M7!^Y-)Q,"ZYYOSW?7&DI^'_"KA.OK5JGX(/:^.FIJI1]JQ,-!6\D^LOCU3GN
MU$1_N/ %ML/:'';Y@YOSWFC?Y?8?PN0[4$L#!!0    ( "6 558J[.'.;@@
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
ML;/< @!+,1T $0              @ $     8V%L>"TR,#(R,3(S,2YH=&U0
M2P$"% ,4    "  E@%56BMW+*# 3   0W   $0              @ 'BW (
M8V%L>"TR,#(R,3(S,2YX<V102P$"% ,4    "  E@%568:VN\;(H  #EEP$
M%0              @ %!\ ( 8V%L>"TR,#(R,3(S,5]C86PN>&UL4$L! A0#
M%     @ )8!55A)95]D 50  1<X# !4              ( !)AD# &-A;'@M
M,C R,C$R,S%?9&5F+GAM;%!+ 0(4 Q0    ( "6 5595AU$Z$*P  $\P 0 4
M              "  5EN P!C86QX+3(P,C(Q,C,Q7V<Q+FIP9U!+ 0(4 Q0
M   ( "6 55;CE)KGH14! /^)"P 5              "  9L:! !C86QX+3(P
M,C(Q,C,Q7VQA8BYX;6Q02P$"% ,4    "  E@%56^,NNE/BF  #,L@< %0
M            @ %O, 4 8V%L>"TR,#(R,3(S,5]P<F4N>&UL4$L! A0#%
M  @ )8!55IL<+JZ9 P  5Q8  !X              ( !FM<% &-A;'@M,C R
M,C$R,S%X97@R,3%S=6)S:61I+FAT;5!+ 0(4 Q0    ( "6 558O60J:+@,
M 'P(   >              "  6_;!0!C86QX+3(P,C(Q,C,Q>&5X,C,Q:W!M
M9V-O;BYH=&U02P$"% ,4    "  E@%56*NSASFX(  ":+0  %P
M    @ '9W@4 8V%L>"TR,#(R,3(S,7AE>#,Q,2YH=&U02P$"% ,4    "  E
M@%56YP^F;7@(  !O+@  %P              @ %\YP4 8V%L>"TR,#(R,3(S
M,7AE>#,Q,BYH=&U02P$"% ,4    "  E@%56B;BQ;]X%  !&*   %P
M        @ $I\ 4 8V%L>"TR,#(R,3(S,7AE>#,R,2YH=&U02P4&      P
,#  S P  //8%

end
</TEXT>
</DOCUMENT>
</SEC-DOCUMENT>
